为什么这个角色替换程序不起作用?

时间:2012-12-17 12:24:43

标签: c replace int

以下程序编译但在其中包含乱码数据并且不会替换..

#include <stdio.h>
#include <string.h>

int main (void)
    {
    int i;
    char string[100];
    printf("Enter a string");
    fgets(string, 100, stdin);
    for (i=0; i<strlen(string);i++)
    {
        if (string[i]=='o')
        {
            string[i]='0';

        }

    }
    printf("%c", string);
    return 0;
}

3 个答案:

答案 0 :(得分:1)

在循环之前计算strlen

使用%s代替%c

printf("%s", string);

根据Vallabh Patade的建议,您不需要计算长度:

char *p, string[100];

printf("Enter a string");
p = fgets(string, 100, stdin);
while (*p) {
    if (*p == 'o') *p = '0';
    p++;
}
printf("%s", string);

答案 1 :(得分:1)

1)改变

printf("%c", string);

printf("%c", string[i]);

在循环内部OR

2)将它从环路中取出添加

printf("%s", string);

循环之后。

答案 2 :(得分:0)

如果还有其他问题,我不会这样做。只有声明应更改为

 printf("%s", string); 

因为我们正在打印一个字符串。也许字符串保持所需的输出只是我们以错误的方式打印它。