2016-07-22 5 views
1
#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h> 
#define SIZE 19 

int main() 
{ 
    char name[SIZE]; 
    int x; 
    int i; 

    printf("Enter your name: "); 

    scanf("%s", &name); 

    for (i = 1; name[i] != '\0'; i++); 
     printf("Are you sure your name is: "); 

    for (x = i - 1; x >= 0; x--) 
     printf("%c", name[x]); 
} 

オンライン9なぜFor文の後にセミコロンを付ける必要がありますか?セミコロンがなければ、「あなたの名前は本当ですか?あなたの名前は確かですか?」と印刷されます。C - Forループステートメント後のセミコロン

EDIT:人々はので、ここで重複した質問が好きではない私は別のそれを作っています - あなたは、なぜそれが問題に動作していないされてどう思いますか????

+0

いいえ。それはバグです。 – evaitl

+0

あなたはそれがあなたが期待しているものは明確ではありません。しかし、forの後にセミコロンは必要ありません。セミコロンを削除することで、NULL文字が配列の3番目の要素(あなたが記述した場合)にあるため、メッセージを2回出力します。あなたは何を達成したいのですか? –

+2

これはバグではありません。文字列の長さを 'i'に計算するために使用されます。 –

答えて

3

ラインname[i]はnull終端されるまで

for (i = 1; name[i] != '\0'; i++); 

がループしている[解決しよう]。この時点でカウンタiは、次のコード行で使用される文字列name、の長さを有するであろう。 コードの唯一の問題は、それがループの一部であると考えるために誤解されて次の行のインデントです。

+0

「コードの唯一の問題は、次の行のインデントです」 - まあ、それとはstrlenを(使用しない理由はありませんという事実)と、この全体のことはもっとたくさん明確にする... – nephtes

+0

@nephtesています確かに。しかし、コードレビューのために残しておきます。 –

+0

うん、ループ後のprint文はそのようなことになっていません...笑。ユージンに感謝します! – flamed65

関連する問題