如何在C中创建字符串类型变量

如何在C中声明字符串变量?

背景

在我学习c的基础知识的过程中,我试图将我最古老的python程序Bob之一移植到C.在程序中,脚本会询问用户有关他或她自己的信息,然后吐出响应。 几乎所有这些变量都使用raw_input作为信息 – 变量是字符串。 但是,我发现无法声明C变量。

到目前为止,我已经尝试将变量声明为charint.类型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 

最后, 雅虎答案说我不得不使用一种叫做character array东西。 它发布于5年前,所以我认为有更好的方法。

编辑

我正在按照C编程的教程进行操作。

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

编辑:限制输入长度为59个字符(加上终止0):

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

你的put不是字符串,字符串看起来像“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

在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 name [60];

 #include  int main() { char name[648]; printf("What is your name?"); scanf("%s", name); printf("Your name is %s", name ); return 0; }