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

1) 変更

printf("%c", string);

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

ループ内 OR

2)ループから削除して追加

printf("%s", string);

ループ後。

于 2012-12-17T12:38:59.890 に答える
1

ループの前に strlen を計算する

%c の代わりに %s を使用

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 に答える
0

他に問題があれば申し分ありません。ステートメントのみを変更する必要があります

 printf("%s", string); 

文字列を印刷しているので。間違った方法で出力しているだけで、文字列が目的の出力を保持している可能性があります。

于 2012-12-17T12:39:52.910 に答える