gpt4 book ai didi

c - 从 txt 文件 C 中读取和比较数字

转载 作者:太空宇宙 更新时间:2023-11-04 04:04:31 24 4
gpt4 key购买 nike

我是 C 编程的新手,所以我在解决下面的问题时遇到了困难。

我有一个文本文件 inp.txt,其中包含如下信息:

400;499;FIRST;
500;599;SECOND;
670;679;THIRD;

我需要输入一个数字,我的程序需要将它与 inp.txt 文件中的数字进行比较。

例如,如果我输入 450,它介于 400 和 499 之间,所以我需要将单词 FIRST 写入文件 out.txt

我不知道如何将字符数组转换为 int。

最佳答案

我认为您会希望在您的程序中包含这些一般步骤(但我会留给您来弄清楚您希望如何执行)

  1. 将文件 inp.txt 中的每个范围和文本“FIRST”、“SECOND”等加载到一个数组或多个数组或类似数组中。正如我在上面的评论中所说,fscanf 可能很方便。此页面描述了如何使用它 - 该页面是关于 C++ 的,但在 C 中使用它应该是相同的 http://www.cplusplus.com/reference/clibrary/cstdio/fscanf/ .粗略地说,这个想法是你给 fscanf 一个格式说明符来表示你想从文件的一行中提取什么,然后它把它找到的位放入你指定的变量中)
  2. 提示用户输入一个数字。
  3. 查看数组以计算出数字适合的范围,以及输出的文本

编辑:我会按照提问者的要求提供更多细节。这仍然是一种骨架,可以给你一些想法。使用 fopen 函数,像这样(声明一个指针 FILE* input_file):

input_file = fopen("c:\\test\\inp.txt", "r") /* "r" opens inp.txt for reading */

然后,通过检查 input_file == NULL 来检查文件是否已成功打开。

然后使用fscanf 从文件的一行中读取详细信息。遍历文件的行,直到你读完整个文件。您为 fscanf 提供指向变量的指针,您希望它将文件每一行的信息放入其中。 (这有点像相反的 printf 格式说明符)。

因此,您可以声明 int range_start, range_endchar range_name[20]。 (为简单起见,我们假设所有单词的长度最多为 20 个字符。但从长远来看,这可能不是一个好的计划)。

while (!feof(input_file)) { /* check for end-of-file */

if(fscanf(input_file, "%d;%d;%s", &range_start, &range_end, range_name) != 3) {
break; /* Something weird happened on this line, so let's give up */
else {
printf("I got the following numbers: %d, %d, %s\n", range_start, range_end, range_name);
}
}

希望这能给您一些想法。我试过运行这段代码,它似乎确实有效。然而,值得一提的是 fscanf 有一些缺点(参见例如 http://mrx.net/c/readfunctions.html ),所以另一种方法是使用 fgets 来获取每一行(fgets 的优点是你可以指定最大数量的要读取的字符,因此没有超出字符串缓冲区长度的危险),然后 sscanf 将字符串读入整数变量。不过我还没有尝试过这种方式。

关于c - 从 txt 文件 C 中读取和比较数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7784679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com