使用C scanf_s输入字符串

时间:2014-04-30 02:24:21

标签: c string scanf c11 tr24731

我一直在努力寻找答案,但我无法找到答案。 我想插入一个读取字符串的部分编程,例如" Hello"和商店,并可以在我想要的时候显示它,以便printf("%s", blah);生成Hello

这是代码部分给我带来麻烦

char name[64];
scanf_s("%s", name);
printf("Your name is %s", name);

我知道printf不是问题;在提示输入某些内容后程序崩溃。请帮帮忙?

4 个答案:

答案 0 :(得分:4)

根据ISO / IEC 9899:2011标准附件K.3.5.3.2中fscanf_s()的规范:

  

fscanf_s功能相当于fscanf,但cs[转换除外   说明符适用于一对参数(除非赋值抑制由a表示   *)。这些参数中的第一个与fscanf相同。那个论点是   紧跟在参数列表中的第二个参数,它具有类型   rsize_t并给出第一个参数指向的数组中的元素数   这对。如果第一个参数指向标量对象,则认为它是一个数组   一个元素。

  

scanf_s函数相当于fscanf_s,参数为stdin   插入到scanf_s的参数之前。

MSDN说类似的事情(scanf_s()fscanf_s())。

您的代码未提供length参数,因此使用了其他一些数字。它并不确定它找到了什么值,因此您从代码中获得了古怪的行为。你需要更像这样的东西,换行有助于确保实际看到输出。

char name[64];
if (scanf_s("%s", name, sizeof(name)) == 1)
    printf("Your name is %s\n", name);

答案 1 :(得分:-1)

    #include<stdio.h>

    int main()
    {
      char name[64];

      printf("Enter your name: ");
      scanf("%s", name);
      printf("Your name is %s\n", name);

     return 0;
    }

答案 2 :(得分:-1)

#include<stdio.h>

int main()
{
  char name[64];
  printf("Enter your name: ");
  gets(name);
  printf("Your name is %s\n", name);
 return 0;
}

答案 3 :(得分:-2)

你应该这样做:scanf ("%63s", name);