[英]can't read string from file in c
我正在尝试逐行读取文本文件并打印前17个字符。
FILE *devices;
devices = NULL;
devices = fopen("devices.txt", "r");
char deviceaddr[17];
char addr[17];
char line[1024];
while (fgets(line,1024,devices) != NULL)
{
fscanf(devices,"%s", deviceaddr);
printf("%s\n", deviceaddr);
}
fclose(devices);
第一行的输出应为00:07:80:4C:0E:EE
,但给出6
。
while
循环正在读取一行文本,然后fscanf
将读取下一组文本(并且可能会意外溢出该缓冲区)。 似乎您应该只从缓冲区line
循环内打印所需的数据。
例如,假设有三行文本。
00:07:80:4C:0E:EE --> ends up line buffer line
second --> ends up in deviceaddr
third line --> ends up in line (unless the fscanf did not consume newline)
有没有办法输出可以是"00:07:80:4c:0E:EE"
,因为这会导致不确定的行为,由于缓冲区溢出,字符串需要18个字节,但是你只提供17你不应该我们fscanf
中的"%s"
,未指定长度。
从devices
上读取一行之后,您正在devices
上调用fscanf
。 如果要逐行阅读, sscanf
在已阅读的行上使用sscanf
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.