我正在尝试读取一个包含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/

10-13 04:33