4

私は C は初めてですが、Java と Android の経験があります。for ループに問題があります。それは決して終わることはなく、ただ続くだけです。

char entered_string[50];
char *p_string = NULL;

gets( entered_string );

for( p_string = entered_string; p_string != '\0'; p_string++ ){
    //....
}

gets は安全ではなく、推奨されておらず、非推奨であることはわかっていますが、私の仕様によれば、使用する必要があります。ポインターを使用して各要素をループしたい。

4

3 に答える 3

12

あなたのテストは*p_string != '\0';

p_stringはポインタであり、ループはポインタがであるかどうかをチェックしています!= '\0'。値がであるかどうかに関心が!= '\0'あり、ポインタから値を取得するには、で値を逆参照する必要があります*

于 2012-11-17T19:49:35.713 に答える
3
    char str[] = "54321"; 
    char *p;  
    p = str;   
    for (p; *p != '\0';++p)
    {
         printf("%s \n",p);
    }

出力:
54321
4321
321
21
1

于 2015-01-19T19:30:46.913 に答える
1

それは条件のためであるはず*p_string != '\0'です-あなたはポインタを逆参照する必要があります。

于 2012-11-17T19:50:14.577 に答える