读书人

删除字符的程序运行不正常解决办法

发布时间: 2012-02-06 15:52:44 作者: rapoo

删除字符的程序,运行不正常
#include <stdio.h>
#include <stdlib.h>
#define CHARMAX 30
int squeeze(char a[],char b[]);
int main()
{ int i,j,k;
char s1[CHARMAX],s2[CHARMAX],s3[CHARMAX];
printf( "please input s1\n ");
for(i=0;i <CHARMAX-1&&getchar()!= '\n ';i++)
{s1[i]=getchar();
s1[i]== '\0 ';}
printf( "please input s2\n ");
for(j=0;j <CHARMAX-1&&getchar()!= '\n ';j++)
{s2[j]=getchar();
s2[j]== '\0 ';}
s3[CHARMAX]=squeeze(s1,s2);
for(k=0;s3[k]!= '\0 ';k++)
printf( "%c ",s3[k]);
system( "pause ");
return 1;
}
int squeeze(char a[CHARMAX],char b[CHARMAX])
{
int i,j,k;
char c[CHARMAX];
k=0;
for(i=0;a[i]!= '\0 ';i++)
for(j=0;b[j]!= '\0 ';j++)
if(a[i]!=b[j])c[k++]=a[i];
c[k]== '\0 ';
return c[CHARMAX];
}

我是新手,不懂调试,大家看一下,那里需要改正。


[解决办法]
你这个程序起码有这么几个地方不对,结合代码的注释我给出来不对的地方。

#include <stdio.h>
#include <stdlib.h>

#define CHARMAX 30

int squeeze(char a[],char b[]);

int main()
{
int i,j,k;
char s1[CHARMAX],s2[CHARMAX],s3[CHARMAX];

printf( "please input s1\n ");
for(i=0;i <CHARMAX-1&&getchar()!= '\n ';i++)
{
s1[i]=getchar();
//s1[i]== '\0 '不能把=和==弄混
s1[i] = '\0 ';
}
printf( "please input s2\n ");
for(j=0;j <CHARMAX-1&&getchar()!= '\n ';j++)
{
s2[j]=getchar();
//s2[j]== '\0 '不能把=和==弄混
s2[j] = '\0 ';
}
s3[CHARMAX]=squeeze(s1,s2);
for(k=0;s3[k]!= '\0 ';k++)
{
printf( "%c ",s3[k]);
}
system( "pause ");
return 1;
}
int squeeze(char a[CHARMAX],char b[CHARMAX])
{
int i,j,k;
char c[CHARMAX];
k=0;
for(i=0;a[i]!= '\0 ';i++)
{
for(j=0;b[j]!= '\0 ';j++)
{
if(a[i]!=b[j])
{
c[k++]=a[i];
}
}
}
//c[k]== '\0 '不能把=和==弄混c[k]= '\0 ';


return c[CHARMAX];
最后的这个return语句返回的是一个字符型的变量。而且它越界了。建议程序还是重写吧。主要是改进你的那个squeeze函数。

}
另外,你的输入有问题,首先你应该明白什么是getchar(),然后看看你那个是那里用的不对。

读书人网 >C语言

热点推荐