Tag: 文件

文件读写到同一个文件?

我设法打开一个文件,并在写入另一个文件时读取var=fopen(file,”r”) / “w”但即使使用r +或w +模式,我也无法打开文件并更改其内容。 想象一下: int formatacao (char original[]){/*se a cadeia nao tiver escrita em maiusculas, esta funçao vai alteralas para tal*/ int val1; FILE * original_open; original_open = fopen (original,”r+”); if (original_open==0){ printf (“ficheiro %c 1.”,original); } while ((val1=fgetc(original_open))!=EOF){ if (val1>=’a’&&val1<='z'&&val1){ fputc(val1-32,original_open); } else fputc(val1,original_open); } fclose (original_open); return (0); } 代码工作,没有错误,没有警告,唯一的问题是:如果我像这样使用它,它会删除文件中的内容但这样可行: int […]

如何在C中将hex数读入无符号整数

我想将文本文件中的hex数读入无符号整数,以便我可以执行机器指令。 它只是一个模拟类型的东西,它查看文本文件内部并根据值及其相应的指令输出寄存器中的新值。 例如,说明将是: 1RXY – >将寄存器R保存为存储器地址XY中的值 2RXY – >将寄存器R保存为XY值 BRXY – >跳转到寄存器R,如果xy是这个等等。 ARXY – > AND在内存地址XY处注册R值 文本文件在新行中包含类似的内容。 (在hex中) 120F B007 290B 我的问题是将每个单独的指令复制到无符号整数…我该怎么做? #include int main(){ FILE *f; unsigned int num[80]; f=fopen(“values.txt”,”r”); if (f==NULL){ printf(“file doesnt exist?!”); } int i=0; while (fscanf(f,”%x”,num[i]) != EOF){ fscanf(f,”%x”,num[i]); i++; } fclose(f); printf(“%x”,num[0]); }

fscanf和换行符

我有fscanf从配置文件中读取设置行。 这些设置具有严格预定义的格式,看起来像 name1=option1; name2=option2; … 所以基本上我做 fscanf(configuration,”%[^=]=%[^;];”,name,option); 其中配置是文件流,名称和选项是编程缓冲区。 问题是名称缓冲区包含我不想要的换行符。 我在“[^ …]”设置为跳过换行符时错过了格式说明符吗? 无论如何,它可以通过格式说明符解决吗? BTW:通过写这个来吞掉换行符 “%[^=]=%[^;];\n” 我认为,换行符可能会在任何地方重复不止一次。

从c / c ++中的文件读取最后n行

我看过很多post,但没找到像我想要的东西。 我输错了: ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…… // may be this is EOF character 进入无限循环。 我的算法: 转到文件末尾。 将指针的位置减1并逐个字符地读取。 退出,如果我们找到我们的10行或我们到达文件的开头。 现在我将扫描整个文件直到EOF并打印它们//未在代码中实现。 码: #include #include #include #include #include using namespace std; int main() { FILE *f1=fopen(“input.txt”,”r”); FILE *f2=fopen(“output.txt”,”w”); int i,j,pos; int count=0; char ch; int begin=ftell(f1); // GO TO END OF FILE fseek(f1,0,SEEK_END); int end = ftell(f1); pos=ftell(f1); while(count<10) { pos=ftell(f1); […]

如何在C ++中从文件中读取小端整数?

说我有一个二进制文件; 它包含正二进制数,但以小端编写为32位整数 我该如何阅读此文件? 我现在有这个。 int main() { FILE * fp; char buffer[4]; int num = 0; fp=fopen(“file.txt”,”rb”); while ( fread(&buffer, 1, 4,fp) != 0) { // I think buffer should be 32 bit integer I read, // how can I let num equal to 32 bit little endian integer? } // Say I just want […]

附加到C中的文件末尾

我正在尝试将文件myfile.txt的内容追加到c中第二个文件myfile2.txt的末尾。 我可以复制内容,但我找不到附加的方法。 这是我的代码: FILE *pFile; FILE *pFile2; char buffer[256]; pFile=fopen(“myfile.txt”, “r”); pFile2=fopen(“myfile2.txt”, r+); if(pFile==NULL) { perror(“Error opening file.”); } else { while(!feof(pFile)) { if(fgets(buffer, 100, pFile) != NULL) { fseek(pFile2, -100, SEEK_END); fprintf(pFile2, buffer); } } fclose(pFile); fclose(pFile2); 我不认为我正在使用fseek,但我想要做的是调用fseek将指针放在文件的末尾,然后写入该指针的位置,而不是在该指针的开头。文件。 这是正确的方法吗?

程序从文件中读取单词并在文件中计算它们的出现次数

我目前正在尝试创建一个程序来读取文件,找到每个唯一的单词并计算该单词在文件中出现的次数。 我目前要求用户输入一个单词并在文件中搜索该单词出现的次数。 但是我需要程序自己读取文件,而不是要求用户输入单个单词。 这就是我目前所拥有的: #include #include int main(int argc, char const *argv[]) { int num =0; char word[2000]; char *string; FILE *in_file = fopen(“words.txt”, “r”); if (in_file == NULL) { printf(“Error file missing\n”); exit(-1); } scanf(“%s”,word); printf(“%s\n”, word); while(!feof(in_file))//this loop searches the for the current word { fscanf(in_file,”%s”,string); if(!strcmp(string,word))//if match found increment num num++; } […]

程序终止时保证文件删除(C / C ++)

Win32的CreateFile有FILE_FLAG_DELETE_ON_CLOSE ,但我在Linux上。 我想打开一个临时文件,在程序终止时将永远删除该文件。 我可以理解,在程序崩溃的情况下,保证这可能是不切实际的,但在任何其他情况下我都希望它能够工作。 我知道RAII。 我知道信号。 我知道atexit(3) 。 我知道我可以打开文件并立即删除它,文件将保持可访问状态,直到文件描述符关闭(甚至处理崩溃)。 这些似乎都不是一个完整而直接的解决方案: RAII:去过那里,完成了:我有一个析构函数删除文件的对象,但如果程序被一个信号终止,则不会调用析构函数。 信号:我正在编写一个低级库,这使得注册信号处理程序变得棘手。 例如,如果应用程序本身使用信号怎么办? 我不想踩任何脚趾。 我可能会考虑巧妙地使用sigaction(2)来应对……但是还没有充分考虑这种可能性。 atexit(3) :显然没用,因为它在exception终止期间没有被调用(例如通过信号)。 preemptive unlink(2) :这是非常好的,除了我需要文件在文件系统中保持可见(否则系统更难监控/故障排除)。 你会在这做什么? 进一步说明 我在原帖中省略了一个细节,我现在意识到我应该包括在内。 在这种情况下,“文件”不是严格意义上的普通文件,而是POSIX消息队列。 我通过mq_open()创建它。 它可以通过mq_close()或close()前者是我系统中后者的别名)。 它可以通过mq_unlink()从系统中删除。 所有这些使得它类似于常规文件, 除了我无法选择文件所在的目录。 这使得当前最流行的答案(将文件放在/tmp )变得不可行,因为“文件”是由系统在容量非常有限的虚拟文件系统中创建的。 (我已将虚拟文件系统挂载到/dev/mqueue ,遵循man mq_overview的示例)。 这也解释了为什么我需要名称保持可见(使立即取消链接方法不可行):“文件”必须在两个或多个进程之间共享。

fread会移动文件指针吗?

简单的问题, 当我使用fread时: fread(ArrayA, sizeof(Reg), sizeBlock, fp); 我的文件指针, fp向前移动?

通过char读取字符串直到C / C ++行结尾

如何在一个字符串中读取一个字符串,并在到达行尾时停止? 我使用fgetc函数从文件读取并将字符放入数组(后者将数组更改为malloc),但无法弄清楚当到达行尾时如何停止 试过这个(c是来自文件的char变量): if(c==”\0″) 但它给出了错误,我无法将指针与整数进行比较 文件看起来像(单词的长度未知): one two three 所以这里有一些问题:1)我可以将c与\ 0进行比较,因为\ 0是两个符号(\和0)或者它被计为一个(与\ n相同的问题)2)也许我应该使用\ n? 3)如果上面的建议有误,你会建议什么(注意我当时必须阅读字符串一个字符) (注意我对C ++很新(并自己编程))