我正在尝试创建一个函数,该函数从用户那里获取文件名并检查是否存在,只要不存在该文件名,我希望再次询问用户输入文件,直到找到可以存在。最后,我希望将该文件的名称返回主目录,以便在其他函数中使用。
我创建了一个我认为可以使用的函数,但是似乎我在调用变量而不直接输入文件名时遇到了问题。 (我不是那是问题所在)。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
char* fileCheck();
char* fileCheck()
{
char* fileName;
printf("Please enter a file name: ");
gets(fileName);
while (access(fileName, F_OK) == -1)
{
printf("The File %s was not Found\nPlease enter a new file name: ", fileName);
gets(fileName);
}
return fileName;
}
int main (void)
{
fileCheck();
return 0;
}
我希望函数的输出为有效(现有)文件名。实际上,我收到的是垃圾号码退出代码。
答案 0 :(得分:6)
gets
要腾出空间,不能将gets
与未分配的空间一起使用,应为char filename[SOME_SIZE];
另一方面,请勿使用gets
,因为它已不再是语言的一部分,而应使用fgets
并删除尾随的换行符。
阅读有关如何跟踪换行符的内容 Removing trailing newline character from fgets() input