一道c语言编程题,麻烦帮忙看一下我编的程序错在哪儿?

2024-11-17 11:38:16
推荐回答(2个)
回答(1):

#include"stdio.h"

int del_char(char *old,char *n) 

{ int i,j=0;

char a=' ';

for(i=0;a!='\0';i++)

{ a=old[i];

if(a!=' '){n[j]=a; j++; }

}

n[j]='\0';

return 0;

}

int link_string(char *n,char *link_new)

{ int i,j,b=1;

char a;

for(i=0;;i++)

{ link_new[i]=n[i];

if(n[i]=='\0')

{ j=i; break; }

}

for(i=j;j-b>=0;i++)

{ a=n[j-b];

b=b+1;

link_new[i]=a;

}

link_new[2*j]='\0';

return 0;

}

int main()

{ char old[]="was it a bar or a bat i saw",n[25],link_new[49];

del_char(old,n);

link_string(n,link_new);

printf("第一个函数输出%s\n",n);

printf("第二个函数输出%s\n",link_new);

}

回答(2):

第一个函数输出wasitabarorabatisaw
第二个函数输出wasitabarorabatisawwasitabarorabatisaw

a没有初始化

del_char里边,a没有初始化,就去判断a!='\0',导致内存泄露

#include"stdio.h"
int del_char(char *old,char *n)
{
int i,j=0; char a=old[0];
for(i=0;a!='\0';i++)
{
a=old[i];
if(a!=' ')
{
n[j]=a;
j++;
}
}
return 0;
}
int link_string(char *n,char *link_new) 
{
int i,j,b=1;
char a;
for(i=0;;i++)
{
link_new[i]=n[i];
if(n[i]=='\0')
{ j=i; break; }
}
for(i=j;j-b>=0;i++) {
a=n[j-b]; b=b+1; link_new[i]=a;
}
link_new[2*j]='\0';
return 0;
}
int main()
{
char old[]="was it a bar or a bat i saw",n[20],link_new[39];
del_char(old,n);
link_string(n,link_new);
printf("第一个函数输出%s\n",n);
printf("第二个函数输出%s\n",link_new);
}