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

问题描述 投票:6回答:6

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

背景

在我学习基础知识的过程中,我试图将我最古老的程序之一Bob移植到C.在程序中,脚本会询问用户有关他或她自己的信息,然后吐出响应。几乎所有这些变量都使用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会返回一些奇怪的东西。这部分的全球化 - 全球突出显示。

0x7fff96d2b4f0:  pcmpeqb(%rdi), %xmm0

最后,this Yahoo Answer说我必须使用一种叫做character array的东西。它发布于5年前,所以我认为有更好的方法。

编辑

我正在关注C Programming的教程。

c string variable-declaration
6个回答
5
投票
char name[60];
scanf("%s", name);

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

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

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);

2
投票

你的推文中的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;
}

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;
}

初始化数组,最好避免bug

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

相反,int用于int数字(1,2,3,ecc。);对于浮点数,您必须使用float


-1
投票

通常我们在scanf中使用“&”但你不应该在变量“name”之前使用它。因为“name”是一个char数组。如果使用不带“[]”的char数组的名称,则表示数组的地址。


-2
投票

替换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;
}
© www.soinside.com 2019 - 2024. All rights reserved.