输入时文件未打开。 C

时间:2014-10-23 19:18:26

标签: file null fopen do-while

我的问题是当我尝试输入spath作为fopen()的第一个参数时;是保持循环文件是否存在。然而,当我将参数硬编码到我的测试文件时,它可以正常工作。我不确定是什么问题,也许是语法。

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

int main()
{
  char spath[255], dpath[255];
  int c;
  FILE *sfp, *dfp;

  do
  {
     printf("Please enter a source file:\n");
     fgets(spath, sizeof(spath), stdin);
     if(strlen(spath) > 253)
     {
     while((c = getchar()) != '\n' && c != EOF);
     }
  }while((sfp=fopen(spath,"r")) == NULL);
}

1 个答案:

答案 0 :(得分:0)

进一步阅读时,fgets()在数组中有一个新的行字符,这会使事情变得混乱。要解决此问题:

  for(i = 0 ; i < lenght ; i++) 
  { 
  if(array[i] == '\n') 
  array[i] = '\0' ; 
  } 

这会删除换行符并插入终止符。 点击此链接获取更多信息:Open file with user input (string) - C