#include stdiohint main char s132; getss1; char c; c = getchar; int j = 0; for int i = 0; s1i != 0; ++i ifs1i != c s1j = s1i; j++; s1j =
这个代码存在逻辑错误,导致无法完成字符串的删除操作。具体来说,问题在于以下代码段:
s1[j] = '\0';
这个语句应该放在if语句之外,因为它的作用是将新字符串的结尾置为'\0',而不应该在每次循环中都执行。如果在if语句中执行,那么当遇到第一个不等于c的字符时,就会把新字符串的结尾置为'\0',导致后面的字符都被截断了。
正确的代码应该是这样的:
#include "stdio.h"
int main(){
char s1[32];
gets(s1);
char c;
c = getchar();
int j = 0;
for (int i = 0; s1[i] != '\0'; ++i) {
if(s1[i] != c){
s1[j] = s1[i];
j++;
}
}
s1[j] = '\0';
puts(s1);
}
在这个版本的代码中,将s1[j] = '\0';放在了for循环之外,确保只有在循环结束后才会执行,从而正确地将新字符串的结尾置为'\0'
原文地址: http://www.cveoy.top/t/topic/cqhp 著作权归作者所有。请勿转载和采集!