Arrays C-将字符串从文本文件读入结构内的数组

Arrays C-将字符串从文本文件读入结构内的数组,arrays,c,struct,Arrays,C,Struct,我试图将.txt文件中的文本读入结构数组。 这是我的代码(我已经玩了一堆,所以如果它看起来到处都是,我道歉): 非常感谢您的帮助。您在scanf中只需要3个转换说明符。试一试 if( 3 == fscanf(filePtr, "%4s %25s %25s", users[i].pin, users[i].first, users[i].last) ){ ... printf也很奇怪。尝试: printf("PIN %s| First %s| Last %s|&qu

我试图将.txt文件中的文本读入结构数组。 这是我的代码(我已经玩了一堆,所以如果它看起来到处都是,我道歉):


非常感谢您的帮助。

您在scanf中只需要3个转换说明符。试一试

if( 3 == fscanf(filePtr, "%4s %25s %25s", users[i].pin, users[i].first, users[i].last) ){ ...
printf也很奇怪。尝试:

printf("PIN %s| First %s| Last %s|", users[i].pin, users[i].first, users[i].last);

users=&userList-->
用户=用户列表问题是什么?
无法打开用户。txt
不是有用的错误消息。尝试
perror(“users.txt”)每行输入有3个值。为什么scanf格式字符串有4个转换?请注意,
scanf
格式
%s
永远不会包含任何类型的空格(包括换行符)。另一方面,它将读取并忽略(丢弃)前导空格。当我试图输出第二行
5678 Barry Cool
时,它似乎没有存储在userList结构中?它打印出
PIN□#□☺| 第一|最后↑♣|
@BlackSolis在您显示的代码中,您只读取第一行,因此数组的第二个条目保持未初始化状态。在不知道您实际使用的代码的情况下回答这个问题是很困难的,但我猜您没有实现循环,也从来没有读过第二行。谢谢@William Pursell-您是对的,我从主代码中提取了这个代码来解决问题,我把循环留在了后面。。。。非常感谢,先生。
if( 3 == fscanf(filePtr, "%4s %25s %25s", users[i].pin, users[i].first, users[i].last) ){ ...
printf("PIN %s| First %s| Last %s|", users[i].pin, users[i].first, users[i].last);