繁体   English   中英

在ANSI C中使用fgets打开文件时出错

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM