繁体   English   中英

无法从c中的文件读取字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM