这个代码存在逻辑错误,导致无法完成字符串的删除操作。具体来说,问题在于以下代码段:

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'

#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 =

原文地址: http://www.cveoy.top/t/topic/cqhp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录