1
我試圖把文本文件的結構閱讀的CSV結構
與分配值格式的文本文件的結構,它一直印在我的最後的值被完全打印的問題。
你能幫我解決這個問題嗎?
預先感謝您。
#include <stdio.h>
#include <stdlib.h>
#define MAX_LEN 422498
#define MAX_KEY 128
struct record
{
char* a;
char* b;
};
int main(int argc, char **argv){
char* input=argv[1];
char* output=argv[2];
char* buff[MAX_LEN];
char *delimiter = ";";
//printf("%s\n",input);
//printf("%s\n",output);
FILE *fp;
fp = fopen(input, "r"); //opening file*/
if(fp == NULL)
{
perror("Error while opening the file.\n");
exit(EXIT_FAILURE);
}
int rowsNum=0;
struct record* recArr = malloc(3 * sizeof (struct record));
//struct record recArr[4];
//recArr=malloc(1 * 2*sizeof(char*));
/*recArr[0].a="aa";
recArr[0].b="bb";
recArr[1].a="cc";
recArr[1].b="dd";
recArr[2].a="ee";
recArr[2].b="ff";
printf("%s\n", recArr[0].a);
printf("%s\n\n", recArr[0].b);
printf("%s\n", recArr[1].a);
printf("%s\n\n", recArr[1].b);
printf("%s\n", recArr[2].a);
printf("%s\n\n", recArr[2].b);*/
while (fgets(buff, MAX_LEN, (FILE*)fp)!=NULL)
{
//recArr=realloc(recArr, (rowsNum+1) * 2*sizeof(char*));
//char* Key = strtok(buff, delimiter);
//char* Value = strtok(NULL, delimiter);
recArr[rowsNum].a=strtok(buff, delimiter);
recArr[rowsNum].b=strtok(NULL, delimiter);
printf("%s\n", recArr[rowsNum].a);
printf("%s\n\n", recArr[rowsNum].b);
/*Key=NULL;
Value=NULL;*/
rowsNum++;
printf("%d\n", rowsNum);
}
fclose(fp);
int i;
for (i=0;i<3;i++)
{
printf("%s\n", recArr[i].a);
printf("%s\n\n", recArr[i].b);
}
//printf("%d\n", rowsNum);
}
提示:'a'和'b'是指針,它們存儲地址,而不是整個「字符串」。 – alk
'char * buff [MAX_LEN];' - >'char buff [MAX_LEN];' – chux
到目前爲止我發現的第一個重複項:http://stackoverflow.com/q/15033140/694576 http://stackoverflow.com/cn/statoverflow.html/q/27263728/694576還有更多。 – alk