c - 使用 fscanf 从文件中读取字符串、整数等

标签 c string integer scanf

我需要您的帮助,以了解我应该如何执行以下操作:

我有一个文件,其中包含以空格“”分隔的整数。我需要读取所有整数,对它们进行排序并将它们作为字符串写入另一个文件。我写了一段代码,但我逐个读取一个字符,将单词放入一个 char sub_arr [Max_Int] 中,当我遇到 ' ' 时,我将这些字符(现在是一个字符串)放入另一个 Main int 数组中,直到到达文件末尾,逐个字符串,然后我对它们进行排序和 itoa-ing,并将它们写入另一个文件。

但后来我想起有一个 fscanf功能:我读过它,但我仍然不完全理解它的作用以及如何使用它。

在我的例子中,所有整数都用空格分隔,我可以编写 fscanf(myFile,"%s",word) 吗?它会知道不考虑 ' ' 并在特定字符串的末尾停止吗?!怎么办?

除此之外,我可以编写 fscanf(myFile,"%d",number) 并且它本身会给我下一个数字吗? (我一定是误解了它。感觉就像魔术一样)。

最佳答案

你是对的,fscanf可以给你下一个整数。但是,您需要为它提供一个指针。因此,您需要一个 &后面的数字:

fscanf(myFile, "%d", &number);

*scanf函数族也会自动跳过空格(给定 %c%[%n 时除外)。

您的读取文件循环最终将如下所示:

while (you_have_space_in_your_array_or_whatever)
{
    int number;
    if (fscanf(myFile, "%d", &number) != 1)
        break;        // file finished or there was an error
    add_to_your_array(number);
}

旁注:你可能会想到这样写:

while (!feof(myFile))
{
    int number;
    fscanf(myFile, "%d", &number);
    add_to_your_array(number);
}

虽然看起来不错,但有问题。如果您确实到达文件末尾,您将读取一个垃圾编号并在测试文件末尾之前添加到您的数据中。这就是为什么你应该使用 while我首先提到的循环。

关于c - 使用 fscanf 从文件中读取字符串、整数等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11543341/

相关文章:

C:使用 printf 等精度说明符分配字符串变量

c++ - 将 'this' 指针传递给 SetWindowsHookEx 的 MouseProc

c++ - 为什么 getchar_unlocked() 在 c/c++ 中更快?

python - 从旧样式自动转换高级字符串格式化程序

c - C 中的 for 循环和 char

asp.net - DB 中的 Oracle 字符串大于 UI 中的

python - 在字典中,将值从字符串转换为整数

java - 在 Java 中读取和操作文本文件

parameters - NetLogo - 将参数设置为整​​数

Python:获取按键事件并输出其他内容