質問
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プログラミング のチュートリアルに従っています。
char name[60];
scanf("%s", name);
編集:入力文字数を59文字に制限(プラス0で終了):
char name[60];
scanf("%59s", name);
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);
入れた整数は文字列ではなく、文字列は「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
を使用する必要があります