我正在尝试读取包含4列的制表符分隔文件,并将列的每个元素存储为1维数组。虽然程序正如在注释的printf中那样正确打印字符串,但它没有给我first_col [0]值,依此类推。我的代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
FILE *int_file1;
int BUF = 1024;
char first_col[BUF],sec_col[BUF],third_col[BUF], fourth_col[BUF];
int index=0,i=0;
char *array1[BUF];
int_file1=fopen("test.txt","r");
if(int_file1 == NULL)
{
perror("Error while opening the file.\n");
}
else
{
while(!feof(int_file1))
{
fscanf(int_file1,"%[^\t]\t%[^\t]\t%[^\t]\t [^\n]\n",first_col,sec_col,third_col,fourth_col);
// printf("%s\n",first_col);
strcpy(first_col,array1[index]);
index++;
}
}
fclose(int_file1);
for(i=0;i<index;i++)
{
printf("%s",array1[i]);
}
return 0;
}
inputfile test.txt包含以下元素:
34932 13854 13854 2012-01-07
请帮助!!
答案 0 :(得分:0)
两个错误:
在strcpy(first_col,array1[index])
中,您已在源字符串和目标字符串之间进行了交换。因此,您应将其更改为strcpy(array1[index],first_col)
。
您尚未初始化array1
中的任何条目,因此array1[index]
等表达式基本上是垃圾。因此,在开始strcpy(array1[index],first_col)
:
设置array1[index] = malloc(strlen(first_col)+1);
哦,打印后不要忘记free(array1[i])
......