程序编译链接都通过了,但会出现程序运行停止,找不到错误
- 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++)