当前位置: 首页 > 知识库问答 >
问题:

使用fscanf()读取数据,输出结果立即消失

侯涵煦
2023-03-14

我想使用fscanf()从一个文件中读取整行(包括空格)。该文件如下所示:

//data.txt

lek yuen
3
wo che
5
wo che
8
wo che
5
wo che
7
sha kok
0
hin keng
9
lung hang
8
sha kok
2
sha kok
4
lung hang
8

当我使用 存储它并使用 显示它时,结果 刚好弹出不到1秒,整个cmd窗口就消失了。在编译器中,它显示: 下面是我的代码:

int main() {
    FILE *fp=fopen("data.txt","r");
    char buffer[255];

    if(fp==NULL){
        perror("File not exist!\n");
        exit(1);
       }

    fscanf(fp,"%[^\n]s",&buffer);
    printf("%s",buffer);
    fclose(fp);

    return 0;
}

有人知道发生了什么吗?非常感谢!

共有1个答案

盖玉石
2023-03-14

如果您担心终端窗口消失:

(1)手动打开一个,找到你的可执行文件的位置,手动启动。那扇窗几乎保证关不上。

(2)或者,您可以在谷歌中搜索适当的选项,以便在IDE中设置相应的设置。

(3)在main()结束时,可以尝试从控制台读取,提示“按回车结束程序”。虽然这看起来是万无一失的,但实际上我并不鼓励这样做:如果没有传递文件名,许多有用的程序可以从标准输入读取数据,然后输出到标准输出。在不相关的诊断输出中混入,或者让一个基本的输入/处理/输出程序在提示时等待,都是不雅观的,并且使用户的生活变得更加困难。作为最低限度,在标准错误时要求输入,而不是在标准输出时要求输入,如果预期的输出没有任何EOF标记,那么只需接受一个空行作为EOF标记。然后,空行将是标准输入的一个要求,在标准输入中,例如来自重定向的文件。

如果你想知道为什么只打印一行:这是因为你只打印了一个-)。正如Gerhard所说的,使用循环来读取并打印多行。事实上,对于像这样的文件格式,行并不是特别的;只需读取“单词”(空格之间的字符),如果你能确定单词不包含空格,并且总是有两个,那么就是一个数字。

 类似资料:
  • 我想在JAVA程序中执行一个EXE文件。 它工作正常,但我希望EXE的输出立即在我的JAVA程序的文本区域中。 目前,我在“ping”命令完全完成后得到输出(因此JAVA程序挂起了大约3秒)。但是我想马上有结果... 我做错了什么? 突击队向后。 好吧,我想使用这个程序:https://iperf.fr/iperf-download.php 输出如下所示: 不过,我只有在iperf运行后才能得到这

  • 今天,我遇到了扫描函数的问题。假设您有一个类似于以下示例的结构。 如果运行以下代码 它会打印出来的 原因是fscanf函数假定a.bVal是一个整数,并覆盖a.nVal的前3个字节。这个问题可以通过下面的脏解来解决。 我的问题是,除了解释的解决方案之外,有没有更干净、更直接的方法来避免这个问题?

  • 我正试着在从主题读到它之后提交一个信息。我通过这个链接(https://www.confluent.io/blog/apache-kafka-spring-boot-application)使用Spring创建一个Kafka消费者。通常情况下,它工作得很好,消费者得到消息,然后等待另一个人进入队列。但问题是,当我处理这些消息时,它会花费很多时间(大约10分钟),kafka队列认为消息没有被消耗(提

  • 我必须从ServiceNow RESTAPI导出事件数据。事件状态是一种新的、正在进行的、未决的、未解决的和已关闭的状态。我能够获取处于活动状态的数据,但无法在输出中应用正确的过滤器。它显示一个额外字符“b”,那么如何删除该额外字符? 输入: 导入请求 URL='https://instance_name.service-now.com/incident.do?CSV user='user\u n

  • 我的任务是从txt文件中获取输入,并将其读入结构数组的一部分,然后对其进行操作,但我在读取该文件时遇到了问题。 我的结构如下: 在我的主要观点中:我定义最大值为100 下面是我们要读取的txt文件: 所以我在fscanf的准确性方面遇到了一些问题。要检查worker包含的内容,我使用了printf(“%s”,worker[0]。first)和printf(“%c”,worker[0]。initia

  • 我有一个服务,刮一个网站的数据,然后如果有必要给用户一个通知。 我遇到的问题是,一旦服务关闭,通知就会消失(可能是立即)。下面的代码是应用程序的所有通知代码。我没有输入任何代码来取消通知。

  • 我希望你帮助我理解我应该如何做以下事情: 我有一个包含由空格“”分隔的整数的文件。我需要读取所有整数,对它们进行排序,并将它们作为字符串写入另一个文件。我写了一个代码,但是我一个字符一个字符地读,把这个单词放在一个字符子数组[Max_Int]中,当我遇到“”时,我把这些字符,现在是一个字符串,在原子化后放到另一个主Int数组中,直到到达文件的末尾,一个字符串接一个字符串,然后我对它们进行排序并将它

  • 我在开始一个分配给我的项目时遇到了一点困难。我不能使用字符串运算符、等。我需要将文件扫描到EOF。 以下是该文件的一个示例: 我试图做的是设置一个while循环: 然后尝试检查cur_gate字符串是什么: 问题是,我不知道读完字符串后我将如何扫描3个整数。然后最终,一旦它读取特殊,我需要扫描4个整数。 我想将第一个整数存储在一个名为输出的数组中,其余的存储在一个名为输入的数组中。 总之,我应该如