Num*_*tor 4 c string integer scanf
我希望您能帮助我理解如何执行以下操作:
我有一个包含由空格''分隔的整数的文件.我需要读取所有整数,对它们进行排序并将它们作为字符串写入另一个文件.我写了一个代码,但是我通过char读取char,把这个单词放在char sub_arr [Max_Int]中,当我遇到''时,我将这些字符放入另一个Main int数组后,现在放入一个字符串,直到到达文件的末尾,逐个字符串,然后我对它们进行排序并将它们写在另一个文件中.
但后来我记得有一个fscanf 功能:我读了它,但我仍然不完全理解它做了什么以及如何使用它.
在我的情况下,所有整数由空格分隔,我可以写fscanf(myFile,"%s",word)吗?它会不会考虑''并停在特定字符串的末尾?!怎么样?
更重要的是,我可以写fscanf(myFile,"%d",number),它会给我下一个号码吗?(我一定是误会了.感觉像魔术一样).
你是对的,fscanf可以给你下一个整数.但是,您需要为其提供指针.因此,您需要一个&后面的数字:
fscanf(myFile, "%d", &number);
Run Code Online (Sandbox Code Playgroud)
*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);
}
Run Code Online (Sandbox Code Playgroud)
旁注:您可能会想到这样写:
while (!feof(myFile))
{
int number;
fscanf(myFile, "%d", &number);
add_to_your_array(number);
}
Run Code Online (Sandbox Code Playgroud)
这虽然看起来不错,却有问题.如果您确实到达文件末尾,则在测试文件结尾之前,您将读取垃圾编号并添加到数据中.这就是你应该首先使用while我提到的循环的原因.
| 归档时间: |
|
| 查看次数: |
51099 次 |
| 最近记录: |