我正在尝试读取一个包含4列的制表符分隔文件,并将该列的每个元素存储为一维数组。尽管程序可以像注释的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;
}
输入文件test.txt具有以下元素:
34932 13854 13854 2012-01-07
172098 49418 53269 2012-01-07
--
请帮忙!!
最佳答案
两个错误:
在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])
...
关于c - 无法将字符串存储为C中的数组变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21712430/