搞不懂的出错,请问哪位大侠能给我解释清楚?我已经快发疯了

raygts 2006-07-20 05:22:54
void del_r(char *ptr,char *re_ptr)
{
char *p = NULL;
int i,len = 1;

if(ptr==NULL)
return;

len += strlen(ptr);
p = (char *)malloc(len);

memset(p,0,len);
strncpy(p,ptr,len);
if(ptr==NULL)
for(i = 0;i < len;i++){
if(*ptr++ != '\n'){
len += strlen(pt*p++ = *ptr;
}
}
*p = '0';0,len);
strncpy(re_ptr,p,strlen(p));
free(p);
p = NULL;;i < len;i++){
}


int main()
{
char test[9];
char *re_ptr = NULL;
strcpy(test,"\na\na\n");
printf("%d",strlen(test));
re_ptr = (char *)malloc(9);
printf("%s",test);

del_r(test,re_ptr);

printf("**%s**",test);

free(re_ptr);
re_ptr = NULL;
return 0;
}

我只不过是希望能够去除掉字符串里面的'\n'符号
...全文
232 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
happytang 2006-07-20
  • 打赏
  • 举报
回复
是阿,你粘来粘去的有些太乱了
什么memset,strcpy都用上了,没必要吧
raygts 2006-07-20
  • 打赏
  • 举报
回复
抱歉啦各位,昨晚没睡过觉,今天又乱七八糟的写代码,所以才搞出这个乱七八糟的代码!!以后不会发生这样的事了,我保证!!
谢谢各位!!
jixingzhong 2006-07-20
  • 打赏
  • 举报
回复
void del_r(char *src,char *dest)
{
if(src==NULL)
return; //空串直接返回

for(; *src!='\0'; src++) //从src 串复制不是\n的字符到dest串中
{
if(*src == '\n')
continue;
else
*dest++ = *src;
}
*dest = '\0'; //注意终结符号不可遗漏
}


int main()
{
char test[9];
char *re_ptr = NULL;
strcpy(test,"\na\na\n");
printf("The length of the string is: %d\n",strlen(test));
re_ptr = (char *)malloc(9);
printf("The original string is : %s\n",test);

del_r(test,re_ptr);

printf("The result is : **%s**\n",re_ptr);

free(re_ptr);
re_ptr = NULL;

getch();
return 0;
}
chenhu_doc 2006-07-20
  • 打赏
  • 举报
回复
re_ptr = (char *)malloc(9); //完全可以不要另外一个数组来存储,

所以char re_ptr=NULL; re_ptr = (char *)malloc(9);free(re_ptr);re_ptr=NULL;可以去掉
chenhu_doc 2006-07-20
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
#include <malloc.h>

void del_r(char ptr[] )
{
int i;
int j = 0;
int len = sizeof(ptr)/sizeof(char);

for( i = 0; i< len ; i++)
{
if( '\n' == ptr[i] )
{
ptr[j] = ptr[i+1];
j++;
}

}

ptr[j]= '\0';
printf("%s\n",ptr);
}


int main()
{
char *test;
char *re_ptr = NULL;
test = (char *)malloc(9*sizeof(char));
strcpy(test,"\na\na\n");
printf("%d",strlen(test));

re_ptr = (char *)malloc(9);
printf("%s",test);


del_r(test);

printf("**%s**",test);

free(re_ptr);
re_ptr = NULL;
return 0;
}
flyxkh 2006-07-20
  • 打赏
  • 举报
回复
建议从写
flyxkh 2006-07-20
  • 打赏
  • 举报
回复
程序怎么乱78糟 晕
yingge 2006-07-20
  • 打赏
  • 举报
回复
好多语法错误,贴代码认真点啊

而且这么简单的一个问题怎么你颠来倒去的,不知道想干吗。

#include <stdio.h>

void del_r(const char *src,char *dst){
while(*src){
*dst=*src++;
if(*(src-1)!='\n')
dst++;
}
*dst='\0';
}


int main(){
char s[10]="\na\na\n";
char d[10];
del_r(s,d);
printf("%s\n",d);
return 0;
}
hchf_1 2006-07-20
  • 打赏
  • 举报
回复
最恨的就是这种写的巨吊的代码,晦涩难懂,效率也不见得有多高!

很简单的一件事搞的这么复杂!
int del_r(char *ptr)
{
char *p = ptr;
char *q = NULL;
int cnt = 0;

if(ptr==NULL)
return 0;

q = p;
while (*p != '\0')
{
if(*p == '\n')
{
p++;
cnt++;
}
else
*q++ = *p++;
}
*q = '\0';
return cnt;
}

上面这段应该就可以了吧

chenhu_doc 2006-07-20
  • 打赏
  • 举报
回复
是去掉最后一个结束符号 '\n' 么。。

看了看,比较乱,而且还有很多没有定义的声明变量

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧