2016-05-05 3 views
-1

私はCプログラミングの新人です。これは文字列を逆転させた最初の試みです。私は次のコードを入力したが、ランタイムエラーが発生した。私が間違っている場所を教えてください。同じミスを繰り返さないようにしてください。文字列実行時のエラーを逆転

#include <stdio.h> 
# define size 10 

int main() 
{ 
    int i=0; int a=0; 
    char s[size]; 
    printf("enter your word"); 
    scanf("%s", s); 
    a= strlen(s); 
    for(i=a-1;i>=0;--i) 
    {printf("%s", s[i]);} 

    return 0; 
} 

ありがとうございます。

+0

'%s'はC文字列が単一の文字ではないことを要求します。 '%c'が必要です。 – LPs

答えて

2

あなたはprintf()に間違った型を持つデータを渡すことによって未定義の動作を呼び出さ:char*ため%sのコールが、charを入力s[i]ています。 1文字を印刷するには%cを使用してください。

strlen()を使用するには、#include <string.h>も追加することを忘れないでください。

+0

私はそれがOTの質問だと思います。提案はコメントを通じて行うことができます。 – LPs

+0

ありがとうございます。出力を得ました。もう一つ、scanf( "%s"、s)をscanf( "%s"、&s)に編集しました。違いはありますか? –

+0

@ VishakhaRamani間違った型のデータを指すポインタを渡すことで*未定義の動作*を呼び出す。 '%s'は' char * 'を期待しますが、'&s'の型は 'char(*)[10]'です。適切なオプションを持つコンパイラによって警告されます。 – MikeCAT

関連する問題