scanf_s每次都返回Null

时间:2017-05-09 08:53:55

标签: 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都不会起作用而且会让我发疯。

1 个答案:

答案 0 :(得分:4)

您的scanf_s电话很好。你需要改变的是行:

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

像这样使用printf,您尝试在30firstName数组的lastName位置打印元素,这不仅要求打印特定位置整个阵列,但也是你的阵列之外'界限。这会调用undefined behaviour

将其替换为:

printf("%s %s", firstName, lastName);
相关问题