当我试图找出 C 中 CSV 文件特定列的索引时出现分段错误



我正试图找出CSV文件的特定列的索引。这就是我所做的:但出于某种原因,它给了我分段的错误。

void indexOfColumn(char *column) {
int columnNumber = 0;
char buff[1024];

char *header = malloc(sizeof(char) * 1024); 
//read the first line
fgets(buff, 1024, inFile);
header = strtok(buff, ",");
while(header != NULL || strcmp(header, column) == 0) {
printf("%sn", header);
header = strtok(NULL, ",");
columnNumber++;
}
printf("%dn", columnNumber);
}

我在while循环中打印出了char数组(头(,看起来它正在工作,当它与参数中给定的特定列匹配时,循环停止。但随后分割错误就来了。它不会在循环外打印我正在打印的列编号。

对于初学者来说,此内存分配会产生内存泄漏

char *header = malloc(sizeof(char) * 1024);

因为指针被重新分配给

header = strtok(buff, ",");

while循环的条件必须以以下方式改变

int columnNumber = 0;
while(header != NULL && strcmp(header, column) != 0){
printf("%sn", header);
header = strtok(NULL, ",");
columnNumber++;
}
if ( header == NULL ) columnNumber = -1;

注意C中的索引从0开始。

相关内容

  • 没有找到相关文章

最新更新