如何在 C 中使用整数和字符串从文件中读取整数

How to read integers from file with integers and strings in C

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

示例 .txt 文件:

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

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

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

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

您可能看到的所有单词都不是文件中的有效字符串。它只是一个字符串,在每个字符序列之间包含白色 space 个字符,对您来说显示为一个单词或分隔的字符串,但事实并非如此。

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

#include <stdio.h>

FILE *input;
char source[200];

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

fgets(source, 200, input);

之后,您需要通过将源字符串的每个字符一个接一个地传输到其他 char 数组并停止将字符写入它们来制作那些 "words" 分隔的字符串源字符串中提供最后一个单词后的 space 字符或 NUL 字节。不要忘记制作一个空字节 (\n) 终止每个字符串。

然后检查每个现在有效且分隔的字符串,看它是包含数字的字符串还是不包含任何数字的字符串。

您可以为此目的使用#include

#include <stdio.h>
#include <string.h>
#include <ctype.h>


int checkString( const char s[] ) {
    unsigned char c;
    while ( ( c = *s ) && ( isalpha( c ) || isblank( c ) ) ) ++s;
    return *s == '[=10=]'; 
}



void printNonNumericWords(char str[]) {
int init_size = strlen(str);
char delim[] = " ";

char *ptr = strtok(str, delim);

while(ptr != NULL)
{
    if (checkString(ptr)) 
    printf("'%s'\n", ptr);


    ptr = strtok(NULL, delim);
  }
  printf("\n");
}

像这样调用函数。

printNonNumericWords(this is a 22 string 33 sorry222 stack33ing");