gpt4 book ai didi

c - 使用命令行获取文件

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

我试图打开两个文件,但由于某种原因,fopen 不断返回 Null。我在 Mac 上使用 Codelite。我将这两个文件放在同一个文件夹中,并且已将文件 Dictionary.txt 和 input.txt 放入设置中的项目参数中。我也已经尝试使用完整路径并检查文件的读取权限。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[] ) {

FILE *dict;
FILE *input;
int x;

if ( argc < 3 ) /* argc should be 3 for correct execution*/
{
fprintf(stderr,"1 or 2 Files were missing.");
exit(1);
}

if ( argc > 3 ){
fprintf(stderr,"too many Arguments");
exit(1);
}

/* We assume argv[1] and agrv[2] are filenames to open*/
dict = fopen( argv[1], "r" );
input = fopen( argv[2], "r" );

/* fopen returns NULL on failure */
if ( dict == NULL ){
fprintf(stderr,"Could not open file: %s\n", argv[1] );
exit(1);
}

if ( input == NULL ){
fprintf(stderr,"Could not open file: %s\n", argv[2] );
exit(1);
}
/* Read one character at a time from file, stopping at EOF, which
indicates the end of the file. Note that the idiom of "assign
to a variable, check the value" used below works because
the assignment statement evaluates to the value assigned. */
while ( ( x = fgetc( input ) ) != EOF ) {
printf( "%c", x );
}


fclose( dict );
fclose( input );

return 0;

}

最佳答案

回复:

I have both of the files in the same folder.

在 IDE 中工作时,您认为所在的文件夹通常不是您实际所在的文件夹。

将以下行暂时放在 main() 的开头:

system("pwd"); // UNIXy command to print working directory.

看看它输出什么。如果它与您的文件所在位置不同,您需要移动它们或更改您在命令行上为程序提供的内容。

<小时/>

您可能需要注意的其他事项是文件权限(您必须具有读取权限)和文件大小写( Input.txtinput.txt 不同)。

<小时/>

如果这些建议都不能解决问题,您通常可以查看 errno查看具体问题是什么。包括errno'h在代码顶部并打印出 errno变量。

或者,在if中检查失败的 block ,将它们更改为:

if ( dict == NULL ){
fprintf(stderr,"Could not open file: %s\n", argv[1] );
perror ("opening dict file");
exit(1);
}

关于c - 使用命令行获取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26008109/

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