【问题标题】:How to read integers from file with integers and strings in C如何使用C中的整数和字符串从文件中读取整数
【发布时间】:2020-02-10 06:57:40
【问题描述】:

我正在读取一个 .txt 文件,其中包含随机形式的数据,即其中包含混合的整数和字符串。

示例.txt 文件:

this is a 22 string 33 sorry222 stack33ing
still yysi288 2nd line

我想读取文件并区分所有有效字符串,即不包含与其连接的整数。并将这些字符串存储在一个数组中。

关于如何区分的任何线索?

【问题讨论】:

  • 您可以阅读以空格分隔的单词并检查该单词中是否包含digits
  • 您能否提供一个小型工作原型@Someprogrammerdude
  • 那些不是“整数”(例如,它们不是原始的 int 值)——它们是使用(可能是 ASCII)数字字符的 base-10 文本表示。
  • “您能否提供一个小型工作原型” - 可以,如果您同意我的咨询费:)
  • 你知道scanf函数的使用方法吗?你对the C input/output functions 有任何了解吗(例如fopen)?然后查看fscanf。所有这些都应该成为任何体面的初学者教科书或教程或课程的一部分。

标签: c file-handling


【解决方案1】:

首先:我不能为你编写程序。这是您的任务,除此之外,我什至无法更改您的代码或至少建议更改,因为您没有提供任何代码。对于这种情况,我只能给你一个尘土飞扬的领先算法:

您可能看到的所有单词都不是文件中的有效字符串。它只是一个在每个字符序列之间包含空格字符的字符串,它以一个单词或分隔字符串的形式出现,但它不是。

您必须首先从文件中获取整个字符串并将其存储到char 数组中,我们将其命名为source,使用fgets()

#include <stdio.h>

FILE *input;
char source[200];

input = fopen("text.txt","r");

fgets(source, 200, input);

之后,您需要通过将源字符串的每个字符一个接一个地传输到其他 char 数组来制作这些“单词”分隔的字符串,并在空格字符或最后一个字之后的 NUL 字节在源字符串中提供。不要忘记使用 Nul-Byte (\n) 来终止每个字符串。

然后检查每个现在有效且分隔的字符串,如果它是包含数字的字符串或没有任何数字的字符串。

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    相关资源
    最近更新 更多