c - scanf_s 每次都返回 Null

标签 c scanf c11 tr24731

我正在对两个不同的输入使用 scanf_s 并将它们放入 char 数组中。我附上了代码和它给出的输出

char firstName[30];
char lastName[30];


int main() {

// Input Name
printf("Please input your name: ");
scanf_s("%s %s", firstName, 30, lastName, 30);

printf("%s %s", firstName[30], lastName[30]);
_getch();

return 0;
}

输出是:

Please input your name: Jane Smith
(null) (null)

对这个问题的任何帮助都会很好,因为我所做的任何 scanf_s 都不起作用,这让我发疯。

最佳答案

您的 scanf_s 调用没问题。您需要更改的是行:

printf("%s %s", firstName[30], lastName[30]);

像这样使用 printf,您试图打印 firstNamelastName 位置 30 中的元素数组,它不仅要求打印特定位置而不是整个数组,而且超出了数组的范围。这会调用 undefined behaviour .

将其替换为:

printf("%s %s", firstName, lastName);

关于c - scanf_s 每次都返回 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43865321/

相关文章:

c - 如何用未知数量的对象填充 C 数组

c - 使用 scanf 函数输入两个字符串

c - 在 fscanf 中匹配两个以 = 作为分隔符的字符串

c - 使用 fscanf 将固定长度的整数扫描到数组中

c - 使用<stdatomic.h>在C11 GCC中使数据读写原子?

c - 强制转换不完整的结构指针是否是未定义的行为?

c++ - Linux 套接字 : Segmentation error

c - 尝试使用基本的音频电平出纳器,但给出了错误的答案

c - 在 c11 中支持 BitSet

c - 从 C 中的检查点保存并重新启动随机链 (drand48)