c - scanf 函数无法正确扫描

标签 c string

这是代码:

StudentTree* readStudentFile(FILE* studentFile){
StudentTree *node=NULL;
StudentTree *tree=NULL;
int id;
char name[10]="\0";
char lastname[10]="\0";
int number;
int grade;

fscanf(studentFile,"%9d%10c%10c%4d%*c%3d",&id,name,lastname,&number,&grade);

不知何故,变量名获得了所有 20 个字符,而变量姓氏 只得到第二个 10 个字符。 我希望变量名称只获取前 10 个字符。

最佳答案

字符数组必须定义为

char name[11] = "\0";
char lastname[11] = "\0";

有足够的空间容纳 10 个字符和一个终止 NUL 字符。

您的情况可能是 lastname 紧跟在 name 之后 在内存中,以便打印 name 打印 both 数组的字符 (也许更多,直到找到 NUL 字符)。

关于c - scanf 函数无法正确扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23423348/

相关文章:

c - 函数声明与原型(prototype)的替代 (K&R) C 语法

c - .dll 中的 Win32 : Using functions from a static . lib

c++ - 将日期成员存储在不同的变量中

c - 寻找有关X265编码和解码的技术细节

javascript - 为什么 charAt() 和 charCodeAt() 被称为安全?

c - 循环遍历函数指针数组

string - 使用scala查找给定字符串是另一个字符串的子字符串的次数

c++ - 运行反向字符串程序时导致停止工作

c# - 更简单的写 null 或 empty 的方法?

c++ - 通过 C++ main char** args 处理不同字符串编码的正确方法是什么?