File 输入时未打开文件。C

File 输入时未打开文件。C,file,null,fopen,do-while,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 {

我的问题是当我尝试输入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);
}
#包括
#包括
#包括
int main()
{
char spath[255],dpath[255];
INTC;
文件*sfp,*dfp;
做
{
printf(“请输入源文件:\n”);
fgets(spath、sizeof(spath)、stdin);
如果(斯特伦(斯帕思)>253)
{
而((c=getchar())!='\n'&&c!=EOF);
}
}而((sfp=fopen(spath,“r”))==NULL);
}

进一步阅读后,fgets()在数组中有一个新行字符,这会把事情搞砸。要解决此问题,请执行以下操作:

  for(i = 0 ; i < lenght ; i++) 
  { 
  if(array[i] == '\n') 
  array[i] = '\0' ; 
  } 
(i=0;i { if(数组[i]='\n') 数组[i]='\0'; } 这将删除新行字符并插入终止符。 单击此链接了解更多信息: