如何正确解析文本文件?

How to parse textfile correctly?

我有一个文本文件,其中包含我编写的程序中的一堆随机数据:

hdfs45 //the hdsf part stays the same everytime, but the number always changes

我试图将这行数据解析为两部分,hdfs 部分和 45 部分(稍后将转换为 int)

我试过类似的方法:

Char * a, * b;
char str[100];
FILE* ptr;

ptr = fopen("test.txt","r"); // opens sucessfully

while(fgets(str,100,file))
{
    a = strtok(str," \n");
    printf("%s",a); // but this prints the whole string

}

数据将是随机的,因为将分隔符设置为“45”是没有用的。但是第一部分 "hdfs" 总是一样的,任何帮助将不胜感激。

你不能使用 strtok 因为没有什么可以标记化的(你不能使用定界符),试试:

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

int main(void)
{
    char str[100] = "hdfs45";
    char *ptr;
    long num;

    ptr = strpbrk(str, "012345679");
    if (ptr) {
        num = strtol(ptr, NULL, 10);
        *ptr = '[=10=]';
        printf("%s -> %ld\n", str, num);
    }
    return 0;
}

如果"hdfs"永远不变,那么你可以简单地将前4个之后的字符转换成数字,即:

int num = atoi(str + 4);
str[4] = '[=10=]';

在您的示例中,num 将等于 45,而 str 将等于 hdfs