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

标签 c fopen scanf

我试图逐行读取文本文件并打印前 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)       

关于无法从c文件中读取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15070121/

相关文章:

c 程序在输入错误的变量类型后忽略所有 scanfs

c - 如何在编译期间检查 C 函数的有效输入?

PHP 无法在 fclose 后取消链接文件

c - 为什么我会出现段错误?

C: 如何让我的程序拒绝长度超过 'y' 或 'n' 的单词?

c - 想要在不将数据类型更改为 char 的情况下删除警告

c - 多个文件中的 Extern 和可能的双重定义

c - 逐行读取txt文件,如果没有则覆盖,否则追加到文件中

c - 如何将字符串存储在数组中?

c - 使用c语言fopen写入txt