我正在尝试创建一个索引数组,用于存储每个''的位置。从文件中读入。我已经编写了代码,它似乎可以工作,但由于某种原因停在正好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
答案 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,所以你遍历整个表数组。