[英]Getting error while using fgets in ansi c to open file
我正在尝试使用c创建/打开文件。 我使用fgets命令输入名称,所以不会像这样溢出缓冲区:
void main() {
printf("Enter file name: ");
char * fileName = (char *) calloc(MAX_BUFFER_SIZE, sizeof(char));
fgets(fileName, MAX_BUFFER_SIZE, stdin);
FILE *inputFile = fopen(fileName, "w");
if(inputFile==NULL) perror(fileName);
}
使用调试器,我可以看到我为文件名输入的值是我想要的值,但是fopen函数返回NULL指针,并且出现“无效参数”错误。 如果我使用scanf("%s", fileName)
相反,就没有问题,并且文件已创建,但是通过这种方式,我可能会使缓冲区溢出。 任何想法为什么第一个示例不起作用? 提前致谢 :)
fgets
读取的字符串的结尾可能会有换行符。 在fopen
使用字符串之前,必须将其删除。
fgets()
对换行符的处理不同于scanf("%s")
或gets()
。 与它们不同, fgets()
在字符串中包含换行符。 输入文件名后,按Enter键,其中可能将换行符包含在文件名中,因此使其无效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.