如何正确解析文本文件?
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
。
我有一个文本文件,其中包含我编写的程序中的一堆随机数据:
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
。