span
怎么了?为什么不存储整个名称而只存储第一个字母?
答案 0 :(得分:0)
因为name
只是一个char
,而您在%c
(和scanf
)中使用了printf()
。
看起来你想要的是:
char name[32]; /* assumes the name is 31 chars or less */
printf("What is your name:"); // I enter my name..
scanf_s("%s", &name); // Should grab my name in this case (Brian)
printf("Hello, %s\n", name); //Should print "Hello, Brian."
但是既然你已将问题标记为C ++,那么有更好的方法可以做到这一点!
答案 1 :(得分:0)
缺少参数:
fscanf_s
函数等同于fscanf
,但c
,s
和[
转换说明符适用于一对参数...该参数紧接在参数列表中由第二个参数跟随,该参数具有类型rsize_t
并且给出该对的第一个参数指向的数组中的元素数。 C11§K.3.5.3.24
// scanf_s("%c", &name);
scanf_s("%c", &name, (rsize_t) 1);
这修复了代码的未定义行为,但仍然只保存/打印1 char
个输入。
代码应以char
作为字符串读取。
#define NAME_SIZE 100
char name[NAME_SIZE];
scanf_s("%s", &name, (rsize_t) NAME_SIZE);
printf("Hello, %s\n", name);