Tag: fclose

使用文本文件二

关于以下代码的几个问题,我在之前的post中获得了帮助。 1)。 任何想法为什么在输出结束时,我得到一个随机的垃圾字符打印? 我正在释放文件等并检查EOF。 2)。 这个想法是它可以使用多个文件争论,所以我想创建新的文件名,增加,即out [i] .txt,是否可能在C? 代码本身接受一个文件,其中包含所有用空格分隔的单词,例如书籍,然后循环遍历,并用\ n替换每个空格以便它形成一个列表,请找到下面的代码: #include #include #include #include /* * */ int main(int argc, char** argv) { FILE *fpIn, *fpOut; int i; char c; while(argc–) { for(i = 1; i <= argc; i++) { fpIn = fopen(argv[i], "rb"); fpOut= fopen("tmp.out", "wb"); while (c != EOF) { c = fgetc(fpIn); […]

写入文件时,中间数据存储在fopen()和fclose()之间?

下面是一个小程序,它从用户获取信息并将其写入文件teacher.txt 。 我只使用一个array q2[30]来获取输入并使用fprintf()写入文件。 但是当我想进入更多的老师然后再次循环将执行但此时fclose()将不会出现所以数据将不会写入/保存(不知道)进入文件也是先前的q2值被删除/覆盖新的输入。 因此,在这种情况下,数据由fprintf()存储/写入。因为当我在fclose()之前手动打开teacher.txt ,没有任何新数据。 #include #include int main() { system(“cls”); int yoe; char cond[]=”yes”;char q2[30]; FILE *p; p = fopen(“teacher.txt”,”a+”); //opening file in reading + appending mode printf(“\nDo you want to add more Teacher ? (yes/no)\n”); gets(q2); fflush(stdin); if(!strcmp(q2,cond)) { do { printf(“\nEnter Teacher’s Name\n”); gets(q2); fprintf(p,”\n!%s!”,q2); printf(“Enter Teacher’s Qualifications\n”); fflush(stdin); gets(q2); […]

在C程序中打开与fopen(使用multithreading)

由于未知原因,似乎fopen在关闭之前重复调用文本文件时无法打开文本文件。 我的C程序使用multithreading,每个线程处理一种类型的输出文本文件(每种类型11个),每种类型都在一个单独的文件夹中。 我需要保留在长时间执行期间打开的这些文件以及在同一个线程中写入大量数据。 为了更好地解释它,过程如下: 1-线程#1启动并在一个文件夹中创建和写入11个文件。 2-在不关闭以前的文件的情况下,线程#2启动并创建并在另一个文件夹中写入另外11个文件。 3-与其他两个线程相同。 4-最后,当创建了所有需要的文件并且所有线程都已完成,除非是主文件,所有文件都被关闭。 然而令人惊讶的是,open能够同时处理所有这些文件。 有没有人对fopen的这个问题有一个提示? 我不知道它是否与multithreading或fopen可以同时处理的最大文件数有关。 我在Borland编译器的Windows平台上。

可以从同一文件描述符的两个线程并行调用fwrite和fclose吗?

如果从同一文件描述符的两个线程并行调用fwrite和fclose会发生什么?

C – 将输出写入文件

EDIT: void print(const int *v, const int size) { FILE *fpIn; fpIn = fopen(“char-array.txt”, “a”); int i; if (v != 0) { for (i = 0; i < size; i++) { printf("%d", (int)v[i]); fprintf(fpIn, "%d\n", (int)v[i]); } perm_count++; printf("\n"); } fclose(fpIn); } 我想这是一个相对简单的问题:) 基本上该程序使用置换算法,并将输出打印到控制台中的标准输出。 我还想通过fprintf将内容写入文件。 虽然我似乎无法让它工作。 它只是将垃圾字符打印到文本文件的第一行,仅此而已! 我将粘贴下面的代码,非常感谢帮助! 在print函数中可以找到写入文件代码。 谢谢, T. #include #include #include #include […]

是否可以从FILE *中挽救文件描述符?

我必须使用某个跨平台库来传递FILE*对象。 我从另一个源(inheritance)获取文件描述符,我想在fd过程中保持相同的fd 。 我目前使用fdopen将文件描述符转换为FILE*对象。 我的问题是fclose用于清理FILE*对象关闭连接文件描述符。 我非常希望在使用它之后保留这个文件描述符。 有没有办法从FILE*救援文件描述符? 有没有办法拆分它? 或者用虚拟替换FILE*文件描述符的方法? PS这需要跨平台,无论如何都要横跨POSIX。

存在一种在不使用全局变量的情况下释放atexit或类似内存的方法?

我正在用C开发一个项目,我需要释放已分配的内存,并在退出之前关闭所有打开的文件。 我决定实现一个clean函数来完成所有这些工作并用atexit调用它,因为有很多可能的退出场景。 问题是atexit不允许我用参数设置函数,所以我不能发送clean需要在进程结束时释放的指针。 所以我需要将每个可能需要释放的指针声明为全局变量,并且每个可能在程序中保持打开的文件? (我已经这样做但看起来不太好)或者确实存在类似的function,允许发送参数的atexit ? 或者更多可能还有另一种我失踪的方式?

删除c中的文件

如何关闭文件并将其删除? 我有以下代码: FILE *filePtr = fopen(“fileName”, “w”); … 现在我想关闭filePtr并删除文件“fileName”。 我是不是该: fclose(filePtr); remove(“fileName”); 要么: remove(“fileName”); fclose(filePtr); 我先做的事情有关系吗? 谢谢!!

Fclose已经fclose的文件

在我的程序中,我可能会关闭一个已经关闭的文件。 当我对已经关闭的文件进行fclose时会发生什么? 如果你不能这样做,如何知道文件是关闭还是打开?

C – 使用fopen,fclose,fputc等

我已经让这段代码最终在我的命令行上使用了一个参数,即一个文件供它使用,尽管我设计的代码的概念是使用无限数量的文件。 它的作用是使用包含以空格分隔的单词的X个文本文件,并用\n替换空格,从而创建单词列表。 虽然,它成功地完成了第一个参数,但它只是忽略了第二个参数。 另一个小问题似乎是它最后还打印出一些垃圾信,Y上面有两个点; 我假设一些EOF符号,但我似乎无法阻止这种情况发生! int main(int argc, char** argv) { FILE *fpIn, *fpOut; int i, j; j = 1; char c; char myString[256]; printf(“%d”, argc); printf(“\n”); printf(“The following arguments were passed to main(): “); for(i=1; i<argc; i++) printf("%s ", argv[i]); printf("\n"); while(argc–) { for(i = 1; i < argc; i++) { fpIn = fopen(argv[j], […]