gpt4 book ai didi

C - 不打印出整个字符串

转载 作者:行者123 更新时间:2023-12-04 10:27:18 24 4
gpt4 key购买 nike

int main()
{
//Define Variables

char studentName;

//Print instructions to fill the data in the screen
printf("Please type in the Students name:\n");
scanf("%s", &studentName);
printf("\n\n%s", &studentName);

return 0;
}

看到上面的代码,我只是在输入句子时打印以筛选出第一个单词。

我知道这是一个基本的东西,但我只是从普通 C 开始。

最佳答案

阅读 scanf(3)文档。对于%s是说

   s      Matches a sequence of non-white-space characters; the next
pointer must be a pointer to character array that is long
enough to hold the input sequence and the terminating null
byte ('\0'), which is added automatically. The input string
stops at white space or at the maximum field width, whichever
occurs first.

所以你的代码是错误的,因为它应该有一个数组 studentName

char studentName[32];
scanf("%s", studentName);

这仍然很危险,因为可能buffer overflow (例如,如果您键入 32 个或更多字母的名称)。使用 %32s而不是 %s可能更安全。

还要养成在编译时启用所有警告和调试信息的习惯(即,如果使用 GCCgcc -Wall -g )。一些编译器可能已经警告过你。学习使用您的调试器(例如 gdb)。

另外,养成结束-而不是开始-你的printf的习惯。使用 \n 格式化字符串(或者调用 fflush ,见 fflush(3) )。

了解 undefined behavior .你的程序有一些!它错过了 #include <stdio.h>指令(作为第一个非注释重要行)。

顺便说一句,阅读现有的 C 语言自由软件代码也会教给你很多东西。

关于C - 不打印出整个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18092740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com