读书人

程序编译链接都通过了但会出现程序运

发布时间: 2012-05-30 20:20:04 作者: rapoo

程序编译链接都通过了,但会出现程序运行停止,找不到错误

C/C++ code
#include "stdio.h"#include "string.h"#define MAXLEN 80int main(void){      char ch;    char str[MAXLEN];    int i, k;    int repeat, ri;    scanf("%d", &repeat);    getchar();    for(ri = 1; ri <= repeat; ri++){        i = 0;        while((ch = getchar()) != '\n'){            str[i]=ch;            i++;        }        str[i] = 0;        for(i=0;str[i]!='0';i++)            if(!(str[i]>='0'&&str[i]<='9'||str[i]>='a'&&str[i]<='f'||str[i]>='A'&&str[i]<='F'))                for(k=i;str[k]!=0;k++)                    str[k]=str[k+1];                            for(i=0;str[i]!=0;i++)            putchar(str[i]);                     }    return 0;}

这个程序,大致就是,输入一个正整数 repeat,做 repeat 次下面的循环,先输入一个以回车结束的字符串,当输入的字符不是十六进制的字符(1--9,,a--f)的时候,自动略去,下面的一个字符填充前面字符的位置。然后输出,程序编译链接都通过了,但是 运行的时候会出现“。exe停止工作”,,,,,我想知道是什么原因会出现停止工作的?

[解决办法]
for(i=0;str[i]!='0';i++)
C/C++ code
for(i=0;str[i]!='0';i++)/* 这儿应该改为: '0' --> '\0' 或者0;注意 '0' 不是'\0',但是'\0'和0是相等的。*/for(i=0;str[i]!='\0';i++) 

读书人网 >C语言

热点推荐