Tag: fopen

警告:fopen()调用

嗨,我正在用linux下的stdlib编程。 gcc针对以下代码行发出以下警告,任何想法为什么会这样? FILE *fd; if ( fd = fopen( filename, “rw” )== NULL ) { 并且警告是: warning: assignment makes pointer from integer without a cast. 如何实现这一点,根据stdlib文档,fopen的返回类型是FILE *。 那么为什么还有警告呢?有什么想法吗? – 提前致谢 –

使用文本文件二

关于以下代码的几个问题,我在之前的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); […]

在C中读取和写入64位64位

我有这个超级简单的代码,我读取8个字节的块(我将在代码中稍后加密它们),然后将它们写在一个新文件中。 它运行良好,但最后8个字节没有写入。 知道为什么吗? #include #include #include #include int main() { uint64_t data; FILE *input, *output; // create output file output = fopen(“output.txt”, “w”); // read file input = fopen(“test.txt”, “rb”); if(input) { while(fread(&data, 8, 1, input) == 1) { fwrite(&data, 8, 1, output); } size_t amount; while((amount = fread(&data, 1, 8, input)) > 0) { […]

关于c程序中的myfopen()

我的问题是关于这个问题: c K&R fopen和fillbuf上的分段错误 。 在这个问题中,在myfopen()函数中,有一个for循环; 我不明白的是,fp将具有从_iob开始的值,但是我没有得到fp-> flag在前三个值(已经修复)之后取的值。 他们是否会采用零值,还有一个问题是在答案中(参见代码下方)他们说我们必须使用malloc为fp提供内存空间,但fp已经提供了内存空间,因为_iob数组有空格和fp将继续获取数组元素的地址,那么malloc的需求是什么?如果所有元素都为零,那么for循环总是会在fp = _iob + 3处中断吗? 其次在main()函数中,提到的模式是“r”但是后面使用的系统调用是write()虽然它没有显示错误,但为什么这可能呢? 第三,编译器在编译此代码时不显示错误或警告,但显示一个对话框,指出“f_open.exe已停止工作”,即使我们编写malloc行(或没有),或者即使有,也保持相同“r”模式或“w”模式。 那有什么不对? #include #include #include #define PERM 0644 #define EOF (-1) #define BUFSIZE 1024 #define OPEN_MAX 20 typedef struct _iobuf{ int cnt; char *ptr; char *base; int flag; int fd; } myFILE; enum _flags { _READ = 01, _WRITE = 02, […]

使用execvp在输出重定向期间接收错误代码

我试图将输出从ls重定向到我在C中创建的shell中的文件。我输入: ls > junk 我得到的是: ls: cannot access >: No such file or directory 然后,如果我使用CTRL-D退出shell,它会在退出之前将ls命令的结果打印到屏幕。 我尝试使用print语句来确定它发生的位置,并且在以下情况之后不打印任何打印语句: dup2(f, STDOUT_FILENO); Also tried dup2(f, 1); 码: pid = fork(); if(pid == 0) { // Get the arguments for execvp into a null terminated array for(i = 0; i “) == 0) //numargs is the number of arguments typed […]

停止fscanf?

我正在为学校写一本成绩簿计划,我对一件事感到困惑。 我们有一个要读取的文件,其中包含多个学生ID和多个分数。 会这样做: results = fscanf(gradebook, “%d %d %d %d”, id, sco1, sco2, sco3); 在读取时将数字存储到那些变量中,然后在变量用完时将光标停止以存储信息?…然后我应该直接进入计算函数来计算最终成绩,然后再将fscanf循环到fscanf中下一个学生? results = fscanf(gradebook, “%d %d %d %d”, id, sco1, sco2, sco3); getCalc(sco1, sco2, sco3); 这是允许的吗? 谢谢您的帮助。

无法递增解除引用指针的值

我似乎有一个简单程序的问题,该程序应该计算文件中的各种字符类型。 即使文件根本不为空,它也始终打印零。 我认为它与指针有关,可能是错的。 我还想知道在这种情况下是否需要初始化变量? // fun.h void count_char(FILE *f, unsigned *newl, unsigned *let, unsigned *num, unsigned *spec_char); // main.c #include #include “fun.h” int main() { unsigned newline = 0, number = 0, letter = 0, special_character = 0; char path[256]; FILE *f_read; printf(“Insert a file path: “); gets(path); f_read = fopen(path, “r”); if(f_read == NULL) […]

C – fopen()不起作用(返回空指针)

为什么fopen()返回一个空指针? 我试图在cont_br和cont_lan中的BRIDGE之后和局域网(分别为4和5)之后保存参数,但fopen()不起作用… #include #include #include #include void read_file(char file[]) { char cont, *str, *ctrl_str; int x=0, cont_br, cont_lan; FILE *file_stream; if (file_stream = fopen(file, “r”)) { while( !feof(file_stream) ) { //Check the file dimension fgetc( file_stream ); x++; } x–; str = (char*) malloc(sizeof(char) * x+1); fseek(file_stream, 0, SEEK_SET); // Return at the beginning of […]

写入文件时,中间数据存储在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平台上。