我有一个文本文件,其中包含我编写的程序中的一堆随机数据:
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”始终是相同的,任何帮助都将非常感激。
答案 0 :(得分:0)
您无法使用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 = '\0';
printf("%s -> %ld\n", str, num);
}
return 0;
}
答案 1 :(得分:0)
如果“hdfs”永远不会改变,那么你可以简单地将前4位后的字符转换为数字,即:
int num = atoi(str + 4);
str[4] = '\0';
在您的示例中,num
将等于45
,而str
将等于hdfs
。