无法将字符串存储为C中的数组变量

时间:2014-02-11 20:34:07

标签: c arrays

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

172098 49418 53269 2012-01-07

-

请帮助!!

1 个答案:

答案 0 :(得分:0)

两个错误:

  1. strcpy(first_col,array1[index])中,您已在源字符串和目标字符串之间进行了交换。因此,您应将其更改为strcpy(array1[index],first_col)

  2. 您尚未初始化array1中的任何条目,因此array1[index]等表达式基本上是垃圾。因此,在开始strcpy(array1[index],first_col)

    之前

    设置array1[index] = malloc(strlen(first_col)+1);

  3. 哦,打印后不要忘记free(array1[i]) ......