web-dev-qa-db-ja.com

Cで文字列型変数を作成する方法

質問

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

背景

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

コード

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

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プログラミング のチュートリアルに従っています。

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

編集:入力文字数を59文字に制限(プラス0で終了):

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

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

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

OR

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

OR

char a[60];
scanf("%59s",a);
2
Tushar Gaurav

入れた整数は文字列ではなく、文字列は「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;
}

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を使用する必要があります

1
Mitro