首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-02-06 
删除字符的程序,运行不正常#includestdio.h#includestdlib.h#defineCHARMAX30intsqueeze(chara[],char

删除字符的程序,运行不正常
#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(),然后看看你那个是那里用的不对。

热点排行