Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
我的csv文件采用以下格式:
我想以这种方式存储数据:
我为解析每一行所做的功能就像:
}
一切正常,直到Linea.fore,在输出中,Linea.fore显示“#FFFFFF#000000”并且其strlen为14,就像while循环从未找到将这些值分开的“,”一样。但是Linea.back既有其价值,又有len的权利。
我认为这是关于char数组处理的问题。
为什么问题仅在Linea.fore中显示?
我是否应该使用for循环而不是while循环,并在循环内请求','?
硬编码'\ 0'错误吗?
谢谢!
你需要
以空终止符存储整个数组(根据您的输入)。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
我的csv文件采用以下格式:
0,0,46,#FFFFFF,#000000
我想以这种方式存储数据:
typedef struct {
char x[2];
char y[2];
char asc[3];
char fore[7];
char back[7];
}LINE;
我为解析每一行所做的功能就像:
LINE ParseLine(){
char c;
int i=0;
LINE Linea;
i=0;
c=fgetc(Archivo);
while (c!=','){
Linea.x[i]=c;
i++;
c=fgetc(Archivo);
}
Linea.x[i]='\0';
i=0;
c=fgetc(Archivo);
while (c!=','){
Linea.y[i]=c;
i++;
c=fgetc(Archivo);
}
Linea.y[i]='\0';
i=0;
c=fgetc(Archivo);
while (c!=','){
Linea.asc[i]=c;
i++;
c=fgetc(Archivo);
}
Linea.asc[i]='\0';
i=0;
c=fgetc(Archivo);
while (c!=','){
Linea.fore[i]=c;
i++;
c=fgetc(Archivo);
}
Linea.fore[i]='\0';
i=0;
c=fgetc(Archivo);
while (c!='\n'){
Linea.back[i]=c;
i++;
c=fgetc(Archivo);
}
Linea.back[i]='\0';
//Show values
printf("%s\t%d\n",Linea.x,strlen(Linea.x));
printf("%s\t%d\n",Linea.y,strlen(Linea.y));
printf("%s\t%d\n",Linea.asc,strlen(Linea.asc));
printf("%s\t%d\n",Linea.fore,strlen(Linea.fore));
printf("%s\t%d\n",Linea.back,strlen(Linea.back));
return Linea;
}
一切正常,直到Linea.fore,在输出中,Linea.fore显示“#FFFFFF#000000”并且其strlen为14,就像while循环从未找到将这些值分开的“,”一样。但是Linea.back既有其价值,又有len的权利。
我认为这是关于char数组处理的问题。
为什么问题仅在Linea.fore中显示?
我是否应该使用for循环而不是while循环,并在循环内请求','?
硬编码'\ 0'错误吗?
谢谢!
最佳答案
遵循相同的逻辑,根据您定义的
char x[2];
char y[2];
你需要
char fore[8];
char back[8];
以空终止符存储整个数组(根据您的输入)。
关于c - 将输入的csv文件解析为char数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32595757/
10-11 17:06