题
如何在C中声明字符串变量?
背景
在我学习c基础知识的过程中,我试图将我最古老的python程序之一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
会返回一些奇怪的东西。这部分的全球化 - 全球突出显示。
0x7fff96d2b4f0: pcmpeqb(%rdi), %xmm0
最后,this Yahoo Answer说我必须使用一种叫做character array
的东西。它发布于5年前,所以我认为有更好的方法。
编辑
我正在关注C Programming的教程。
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);
要么
char *a;
printf("Enter your string here");
gets(a);
要么
char a[60];
scanf("%59s",a);
你的推文中的int不是字符串,字符串看起来像“char myString [20]”。不像“int name”,这是一个整数而不是字符串或char。这是你想要的代码:
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;
}
初始化数组,最好避免bug
for(i=0;i<60;i++){
name[i]='\0'; //null
}
相反,int
用于int数字(1,2,3,ecc。);对于浮点数,您必须使用float
通常我们在scanf中使用“&”但你不应该在变量“name”之前使用它。因为“name”是一个char数组。如果使用不带“[]”的char数组的名称,则表示数组的地址。
替换int名称;至 - 。 char name [60];
#include <stdio.h>
int main()
{
char name[648];
printf("What is your name?");
scanf("%s", name);
printf("Your name is %s", name );
return 0;
}