13

質問

Cで文字列変数を宣言する方法は?

バックグラウンド

の基本を学ぶために、最も古いプログラムの1つであるCに移植しようとしていますBob。このプログラムでは、スクリプトがユーザーに自分自身に関する情報を要求し、応答を吐き出します。これらの変数のほとんどすべてがraw_input情報に使用されます-変数は文字列です。しかし、C変数を宣言する方法が見つかりませんでした。

コード

これまで、変数を型として宣言しようとしましcharint.。コードは次のとおりです。自由に型を切り替えてください。

int main(int argc, const char * argv[])
{

    int name;
    printf("What is your name?");
    scanf("%s",&name);
    printf("Your name is %s", name );

    return 0;
}

エラーメッセージ

このコードを実行すると、Xcode奇妙なものが返されます。globidty-gloopのこの部分が強調表示されます。

0x7fff96d2b4f0:  pcmpeqb(%rdi), %xmm0

最後に、このYahoo Answerは、と呼ばれるものを使用する必要があると述べましたcharacter array。5年前に投稿されたので、もっといい方法があると思いました。

編集

私はCプログラミングのチュートリアルに従っています。

4

8 に答える 8

10
char name[60];
scanf("%s", name);

編集:入力長を59文字に制限(および終了0):

char name[60];
scanf("%59s", name);
于 2013-03-14T21:40:00.820 に答える
3

入力する int は文字列ではありません。文字列は「char myString[20]」のようになります。「int name」とは異なり、これは文字列や文字ではなく整数です。これはあなたが望むコードです:

         int main(int argc, const char * argv[])
{

char name[9999];
printf("What is your name?\n");
scanf("%s", name);
system("cls");
printf("Your name is %s", name);

return 0;
}
于 2017-01-15T21:51:52.797 に答える
2

C では、Java や他の言語のように文字列変数を直接宣言することはできません。文字列を宣言するには、文字配列またはポインターを使用する必要があります。

char a[50];
printf("Enter your string");
gets(a);

また

char *a;
printf("Enter your string here");
gets(a);

また

char a[60];
scanf("%59s",a);
于 2013-03-15T04:32:11.097 に答える
1

XCODEでテスト済み

あなたはそうすることができます:

int main(int argc, const char * argv[])
{

    int i;
    char name[60]; //array, every cell contains a character

    //But here initialize your array

    printf("What is your name?\n");
    fgets(name, sizeof(name), stdin);
    printf("Your name is %s", name );

    return 0;
}

配列を初期化します。バグを回避するのに適しています

for(i=0;i<60;i++){
      name[i]='\0'; //null
}

代わりにint、int番号(1、2、3、ecc。)に使用されます。代わりに浮動小数点数の場合は、を使用する必要がありますfloat

于 2013-03-14T22:01:30.043 に答える
-1

通常、scanf では "&" を使用しますが、ここでは変数 "name" の前に使用しないでください。「name」はchar配列であるためです。char 配列の名前が "[]" なしで使用される場合、それは配列のアドレスを意味します。

于 2019-03-01T11:39:27.057 に答える