在数组中创建所有逗号的索引数组

时间:2015-10-30 01:04:03

标签: c

我正在尝试创建一个索引数组,用于存储每个''的位置。从文件中读入。我已经编写了代码,它似乎可以工作,但由于某种原因停在正好1','超过文件中的第一行。

世界上什么导致它停止我无法弄明白。它只是在前几个索引之后给出零。

#include <stdio.h>
#include <stdlib.h>

void getCommaIndex(int n,char table[],int index[]){
int i;
int p = 0;
for(i = 0 ; i < n ; i++){
    if(table[i] == ','){
        index[p] = i;
        p++;
    }
}    
}

int main()
{
char table[100000];
int index[5000];
int i;
FILE *fp;
fp = fopen("C:/Users/Chris/Desktop/Open Frameworks/apps/myApps/bin/data/tableshort.csv","r");

while( !feof(fp)){
    fgets(table,"%s",fp);
    printf("%s",table);
    getCommaIndex(5000,table,index);
}

for(i = 0 ; i < 11 ; i++){
    printf("%d ",index[i]);
}

输出看起来像:

7 11 20 35 40 59 62 67 0 0 0 0 0 0

2 个答案:

答案 0 :(得分:0)

我刚改变了:

fgets(table,"%s",fp);

为:

fgets(table,5000,fp);

一切正常。

请参阅:http://www.tutorialspoint.com/c_standard_library/c_function_fgets.htm

此外,您的问题中的代码在我的编译器中给了我这条消息:warning: passing argument 2 of 'fgets' makes integer from pointer without a cast。尽可能多地将警告视为错误。

答案 1 :(得分:0)

您可以尝试一次只读一行,而不是一次读取整个文件。此外,在你的getCommaIndex函数表中,[]是100000,但你只迭代前5000个索引。我不清楚,但似乎你的值n应该是100000,所以你遍历整个表数组。