Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? 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