我正在逐行读取文件并将字符串拆分为标记。
int main()
{
FILE* fp;
char line[255];
fp = fopen("file.txt" , "r");
while (fgets(line, sizeof(line), fp) != NULL)
{
char val1[16];
char val2[9];
strcpy(val1, strtok(line, ","));
strcpy(val2, strtok(NULL, ","));
printf("%s|%s\n", val1, val2);
}
}
我的输入文件内容(file.txt)
182930101222, KLA1512
182930101223, KLA1513
182930101224, KLA1514
182930101225, KLA1515
当我打印得到
| KLA1512
代替
182930101222| KLA1512
问题是什么?
最佳答案
你的问题(再次)是你没有为数组分配足够的空间,并覆盖了它的末尾。具有讽刺意味的是,在这种情况下,您甚至不需要分配任何(额外的)数组。 strtok()
正在对 line[]
数组进行标记,用 '\0'
字符覆盖分隔符,这些足以满足您的需求。
int main()
{
FILE* fp;
char line[255];
fp = fopen("file.txt" , "r");
while (fgets(line, sizeof(line), fp) != NULL)
{
const char* val1 = strtok(line, ",");
const char* val2 = strtok(NULL, ",");
printf("%s|%s\n", val1, val2);
}
}
关于c - 逐行读取文件并将字符串拆分为c中的标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18421310/