fgets在运行102次时中断(C编程)[已解决]

fgets在运行102次时中断(C编程)[已解决],c,C,我使用此代码读取csv文件的数据,输入是行和列 在第102列之前,它就像一个符咒,我非常确定问题出在代码上,并且通过我所做的测试,我大部分确定问题出在代码的fgets部分。它与循环无关,只是看起来如果整个代码运行102次就会中断。我快发疯了,任何帮助都将不胜感激。 代码如下: static double csvreader(char a[50],int row, int column) { char line[50]; char *element; char *eptr; double n; i

我使用此代码读取csv文件的数据,输入是行和列

在第102列之前,它就像一个符咒,我非常确定问题出在代码上,并且通过我所做的测试,我大部分确定问题出在代码的fgets部分。它与循环无关,只是看起来如果整个代码运行102次就会中断。我快发疯了,任何帮助都将不胜感激。 代码如下:

static double csvreader(char a[50],int row, int column) {
char line[50];
char *element;
char *eptr;
double n;
int i;
int j=0;
FILE *fp;
fp=fopen(a, "r+");
while(fgets(line, 50, fp)){
    j++;
    if(j == row+1){
        printf("%s",line);
        break;}
}

element = strtok(line, ",");
n = 0.0;
return 0;
   for (i = 1; i < column+1; ++i ) {    
      element = strtok(NULL, ",");}
      n = strtod(element, &eptr);     
      return n;
  fclose(fp);
 }
静态双csvreader(字符a[50],整数行,整数列){
字符行[50];
字符*元素;
字符*eptr;
双n;
int i;
int j=0;
文件*fp;
fp=fopen(a,“r+”);
而(fgets(第50行,fp)){
j++;
如果(j==行+1){
printf(“%s”,第行);
中断;}
}
元素=strtok(第,“,”行);
n=0.0;
返回0;
对于(i=1;i
在尝试从相应流捕获数据之前,应始终检查
fopen()
返回的指针是否为空指针,以检查是否失败。
返回0/*无法访问的代码*/for(i=1;i
You
return
before
fclose
。因此,您可能会达到打开文件的系统限制。请发布显示问题的最短完整代码。我还建议您阅读您真正需要学习如何一致地缩进代码的文章。不一致的缩进使你的代码无法阅读,这也包括你的阅读能力。@WeatherVane就是这样,我不敢相信我没有注意到它。不过我是个笨蛋。非常感谢你!在尝试从相应流捕获数据之前,应始终检查
fopen()/*无法访问的代码*/for(i=1;i
You
return
before
fclose
。因此,您可能会达到打开文件的系统限制。请发布显示问题的最短完整代码。我还建议您阅读您真正需要学习如何一致地缩进代码的文章。不一致的缩进使你的代码无法阅读,这也包括你的阅读能力。@WeatherVane就是这样,我不敢相信我没有注意到它。不过我是个笨蛋。非常感谢你!