我希望你帮助我理解我应该如何做以下事情:
我有一个包含由空格“”分隔的整数的文件。我需要读取所有整数,对它们进行排序,并将它们作为字符串写入另一个文件。我写了一个代码,但是我一个字符一个字符地读,把这个单词放在一个字符子数组[Max_Int]中,当我遇到“”时,我把这些字符,现在是一个字符串,在原子化后放到另一个主Int数组中,直到到达文件的末尾,一个字符串接一个字符串,然后我对它们进行排序并将它们写到另一个文件中。
但后来我想起了有一个fscanf函数:我读过它,但仍然不完全理解它做什么以及如何使用它。
在我的例子中,如果所有整数都用空格分隔,我可以写fscanf(myFile,“%s”,word)
?它是否知道不考虑“并”在特定字符串的末尾停止?!怎样
更重要的是,我可以写fscanf(myFile,"%d",数字)
,它会给我下一个数字本身?(我一定是误会了。感觉像魔法)。
试试这个:
#include <stdio.h>
int main(int argc, char* argv[])
{
char name[256];
int age;
/* create a text file */
FILE *f = fopen("test.txt", "w");
fprintf(f, "Josh 25 years old\n");
fclose(f);
/* now open it and read it */
f = fopen("test.txt", "r");
if (fscanf(f, "%s %d", name, &age) !=2)
; /* Couln't read name and age */
printf("Name: %s, Age %d\n", name, age);
}
你是对的,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
循环。
我在开始一个分配给我的项目时遇到了一点困难。我不能使用字符串运算符、等。我需要将文件扫描到EOF。 以下是该文件的一个示例: 我试图做的是设置一个while循环: 然后尝试检查cur_gate字符串是什么: 问题是,我不知道读完字符串后我将如何扫描3个整数。然后最终,一旦它读取特殊,我需要扫描4个整数。 我想将第一个整数存储在一个名为输出的数组中,其余的存储在一个名为输入的数组中。 总之,我应该如
我的任务是从txt文件中获取输入,并将其读入结构数组的一部分,然后对其进行操作,但我在读取该文件时遇到了问题。 我的结构如下: 在我的主要观点中:我定义最大值为100 下面是我们要读取的txt文件: 所以我在fscanf的准确性方面遇到了一些问题。要检查worker包含的内容,我使用了printf(“%s”,worker[0]。first)和printf(“%c”,worker[0]。initia
正如标题所说,我想知道在Java中是否有使用数组格式化字符串的简便方法。 让我举一个kotlin的例子。 以上代码运行良好。那么Java呢? 对不起,我没有清楚地描述我的问题。当我遇到我的真实案例时,我发现我的代码现在无法工作。 事实上,模板是从文件中读取的。 和模板。txt文件包含: 如您所见,我想读取文件,然后格式化结果。 另外,对于这个问题我很抱歉。因为它似乎被更改为如何格式化从文件中读取的
我需要在android中以字符串的形式加载一个xml文件,以便将其加载到TBXML xml解析器库并对其进行解析。我现在必须以字符串形式读取文件的实现需要大约2秒,即使对于一些KBs的非常小的xml文件也是如此。在Java/Android中,有没有已知的快速方法可以将文件读取为字符串? 这是我现在拥有的代码:
《 cin.getline()》一节中,详细介绍了如何使用 getline() 方法从 cin 输入流缓冲区中读取一行字符串。在此基础上,getline() 方法还适用于读取指定文件中的一行数据,本节就给大家做详细的讲解。 我们知道,getline() 方法定义在 istream 类中,而 fstream 和 ifstream 类继承自 istream 类,因此 fstream 和 ifstrea
我很难理解为什么这段代码返回一个Object[]而不是int[]("line"是我从一个看起来像"1 2 3 4 5"的文件中读取的字符串)。 我希望你能帮我理解,谢谢!