0

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

#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;
}
4

3 回答 3

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);
于 2012-12-17T12:29:00.800 回答
1

1) 改变

printf("%c", string);

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

在循环内或

2)从循环中删除并添加

printf("%s", string);

循环之后。

于 2012-12-17T12:38:59.890 回答
0

如果有其他问题,我无所谓。只有语句应该更改为

 printf("%s", string); 

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

于 2012-12-17T12:39:52.910 回答