我的问题是当我尝试输入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);
}
答案 0 :(得分:0)
进一步阅读时,fgets()在数组中有一个新的行字符,这会使事情变得混乱。要解决此问题:
for(i = 0 ; i < lenght ; i++)
{
if(array[i] == '\n')
array[i] = '\0' ;
}
这会删除换行符并插入终止符。 点击此链接获取更多信息:Open file with user input (string) - C