13

问题

如何在 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返回一些奇怪的东西。globidty-gloop 的这一部分被突出显示。

0x7fff96d2b4f0:  pcmpeqb(%rdi), %xmm0

最后,这个 Yahoo Answer说我必须使用一个叫做character array. 它是 5 年前发布的,所以我认为有更好的方法。

编辑

我正在学习C Programming的教程。

4

8 回答 8

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

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

char name[60];
scanf("%59s", name);
于 2013-03-14T21:40:00.820 回答
3

您放置的 int 不是字符串,字符串看起来像“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;
}
于 2017-01-15T21:51:52.797 回答
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);
于 2013-03-15T04:32:11.097 回答
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 number (1, 2, 3, ecc.); 对于浮点数,您必须使用float

于 2013-03-14T22:01:30.043 回答
0

C 没有字符串变量类型。字符串可以存储为字符数组(char 变量类型)。我要补充的最基本的例子是:

int main()
{
   char name[] = "Hello World!";
   printf("%s",name);
   return(0);
}
于 2020-04-13T12:27:57.983 回答
0

这很简单!

main()只需将这一行放在下面,在你的函数之上。

typedef string char*;

这使您可以像在 C 中处理整数字符一样创建字符串变量。之后,您的程序应如下所示:

#include <stdio.h>

typedef char* string;

int main(void) {
    string a = "Hello";
    printf("%s\n", a);  // %s format specifier for String
    return 0;
}

如需现场演示,请访问此 REPL.it。

于 2020-08-13T04:32:53.640 回答
-1

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

于 2019-03-01T11:39:27.057 回答
-2

替换整数名称;至 - 。字符名称[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;
}
于 2018-04-10T22:08:35.953 回答