gpt4 book ai didi

c - 在 C 中使用 fopen() 使用字符数组作为文件名

转载 作者:行者123 更新时间:2023-11-30 21:08:35 25 4
gpt4 key购买 nike

我正在用 C 编写一个程序,旨在允许用户输入文件名,以便程序可以读取该文件的内容。输入的格式必须是“/i:”,这意味着我必须去掉前三个字符才能获取文件名。

我将文件名存储在具有预设长度的字符数组中(因为我不知道用户将输入多长的文件名)。我使用的命令是:

achBaseOutput[100];
FILE * InputFile

//Instruct users on input

fgets(achBaseOutput, 100, stdin);

//Strips first three characters, scoots file name to start at achBaseOutput[0]

InputFile = fopen(achBaseOutput, "r");

当我执行代码时,我收到一个错误框,上面写着:

Debug Assertion Failed!
File: fgets.c
Line 57
Expression: (str != NULL)

不幸的是,文件名的输入格式不由我决定,所以我无法更改/i: 输入的格式。

如何格式化输入字符串以便 fopen 接受它作为有效参数?

最佳答案

首先,您必须使用类型正确定义数组

char achBaseOutput[100];

库函数fgets保留任何 newline您在该行末尾键入(或在文件中)。

可以像这样删除它,(需要 #include <string.h> ):

achBaseOutput [ strcspn(achBaseOutput, "\r\n") ] = 0;   // remove trailing newline etc

您可以通过打开文件来忽略而不是删除前 3 个字符,如下所示:

InputFile = fopen(achBaseOutput + 3, "r");

关于c - 在 C 中使用 fopen() 使用字符数组作为文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37662500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com