Tag: 文件

文件关闭后FILE指针会发生什么?

我希望知道文件关闭后FILE指针会发生什么。 它会是NULL吗? 基本上,我想在关闭文件之前检查文件是否已经关闭。 例如如下: FILE *f; if(f!=NULL) { fclose(f); } 我可以这样做,还是有其他方法可以解决这个问题?

如何在C中制作动态大小的数组?

我已经习惯了PHP,但我开始学习C.我正在尝试创建一个逐行读取文件并将每行存储到数组的程序。 到目前为止,我有一个逐行读取文件的程序,甚至可以打印每行,但现在我只需要将每行添加到数组中。 我的朋友昨晚告诉了我一些关于它的事。 他说我必须在C中使用多维数组,所以基本上是array[x][y] 。 [y]部分本身很简单,因为我知道每行的最大字节数。 但是,我不知道该文件将有多少行 。 我想我可以让它循环遍历文件,每次只增加一个整数并使用它,但我觉得可能有一种更简单的方法。 任何想法甚至暗示正确的方向? 我感谢任何帮助。

C中的FILE关键字究竟是什么?

我已经开始学习一些C作为一种爱好并且已经盲目地使用FILE作为文件指针的声明已经有一段时间了,我一直在想。 这是C的关键字或特殊数据类型来处理文件吗? 它是否包含文件内的流和其他数据? 为什么它被定义为指针? 一个例子来说明我的意思,使其更清晰: FILE* fp; //<– this fp = fopen("datum.txt", "r"); while(!feof(fp)) { // etc. }

C中最快的文件读取

现在我正在使用fread()来读取文件,但在其他语言中,fread()效率很低,我被告知。 这在C中是一样的吗? 如果是这样,如何更快地完成文件读取?

使用fscanf()读取一行时遇到问题

我正在尝试使用以下代码读取一行: while(fscanf(f, “%[^\n\r]s”, cLine) != EOF ) { /* do something with cLine */ } 但不知怎的,我每次只得到第一行。 这是一条读线的坏方法吗? 我该怎么办才能让它按预期工作?

在C中一次读一行

可以使用哪种方法从C中的文件一次读取一行? 我正在使用fgetsfunction,但它不起作用。 它只读取空格分隔的标记。 该怎么办?

使用带有指向stdin的文件指针的fseek

根据命令行参数,我设置一个文件指针指向指定的文件或stdin(用于管道)。 然后我将这个指针传递给许多不同的函数来从文件中读取。 这是获取文件指针的函数: FILE *getFile(int argc, char *argv[]) { FILE *myFile = NULL; if (argc == 2) { myFile = fopen(argv[1], “r”); if (myFile == NULL) fprintf(stderr, “File \”%s\” not found\n”, argv[1]); } else myFile = stdin; return myFile; } 当它指向stdin时, fseek似乎不起作用。 通过这个,我的意思是我使用它,然后使用fgetc ,我得到了意想不到的结果。 这是预期的行为吗?如果是,我该如何移动到流中的不同位置? 例如: int main(int argc, char *argv[]) { FILE *myFile = […]

向后读取文件(最后一行)

文件看起来像这样: A B C D EFGH IJKL 我想用C读取文件,以便它首先读取最后一行: IJKL EFGH A B C D 我似乎无法找到不使用array进行存储的解决方案。 请帮忙。 edit0:谢谢你的所有答案。 只是为了让您知道,我是创建此文件的人。 那么,我可以以相反的顺序创建它吗? 那可能吗?

如何在内存中缓冲stdout并从专用线程写入

我有一个包含许多工作线程的C应用程序。 至关重要的是这些不会阻塞工作线程需要写入磁盘上的文件,我让它们写入内存中的循环缓冲区,然后有一个专用线程将该缓冲区写入磁盘。 工作线程不再阻塞。 专用线程可以在写入磁盘时安全地阻塞,而不会影响工作线程(写入磁盘时它不会保持锁定)。 我的内存缓冲区调整得足够大,以至于编写器线程可以跟上。 一切都很好。 我的问题是,我如何为stdout实现类似的东西? 我可以将macro printf()写入内存缓冲区,但是我无法控制可能写入stdout的所有代码(其中一些代码在第三方库中)。 思考? NickB

使用C在文本文件中返回随机行的最佳方法是什么?

使用C在文本文件中返回随机行的最佳方法是什么? 它必须使用标准I / O库( ),因为它适用于Nintendo DS自制程序。 澄清: 使用文件中的标题来存储行数不适用于我想要做的事情。 我希望它尽可能随机(如果每条线具有被选为每隔一条线的相同概率,则最好。) 程序运行时,该文件永远不会更改。 (这是DS,所以没有多任务处理。)