读取和比较来自txt文件C的数字

我是C编程的新手,所以我遇到了下面这个问题的困难。

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

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

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

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

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

我想你会在你的程序中想要这些一般步骤(但是我会留给你弄清楚你想要怎么做)

  1. 将每个范围和文本“FIRST”,“SECOND”等从文件inp.txt加载到一个数组或几个数组或类似文件中。 正如我在上面的评论中所说, 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从字符串读取整数变量。 我没有尝试过这种方式。