以下程序编译但在其中包含乱码数据并且不会替换..
#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;
}
答案 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);
因为我们正在打印一个字符串。也许字符串保持所需的输出只是我们以错误的方式打印它。