gpt4 book ai didi

c - 如何在 C 语言中正确使用 fscanf 函数?

转载 作者:太空宇宙 更新时间:2023-11-04 06:48:23 26 4
gpt4 key购买 nike

我正在学习如何在 C 中使用文件。到目前为止,我可以使用 fopen + fprintf 函数编写(创建)txt 文件,但我不了解读写参数的工作原理。

每当我使用 a+、w+ 或 r+ 时,我的程序只写入信息,但不读取信息。我必须关闭文件并以只读模式重新打开它。下面的代码解释得更好:

这段代码对我有用:

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

int main(void){

FILE * myfile = nullptr;

myfile = fopen("./program.txt", "a+"); // I also tried w+ and r+

int num1 = 4;
int num2 = 0;

fprintf(myfile, "%d", num1);
fscanf(myfile, "%d", &num2); // the atribution does not occur
// num2 keeps previous value
printf("%d", num2);
fclose(myfile);

return (0);}

这很好用:

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

int main(void){

FILE * myfile = nullptr;

myfile = fopen("./program.txt", "w");

int num1 = 4;
int num2 = 0;

fprintf(myfile, "%d", num1);
fclose(myfile); //close the file!

myfile = fopen("./program.txt", "r"); // reopen as read only!
fscanf(myfile, "%d", &num2);
printf("%d", num2);
fclose(myfile);

return (0);}

有没有什么方法可以在每次都不需要关闭文件的情况下处理文件(读取和修改它)?

最佳答案

当你想读回刚刚写的内容时,你必须将文件光标移回开头(或任何你想开始阅读的位置)。这是用 fseek 完成的.

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

int main(void) {
FILE * myfile = NULL;

myfile = fopen("./program.txt", "a+"); // I also tried w+ and r+

int num1 = 4;
int num2 = 0;

fprintf(myfile, "%d", num1);
fseek(myfile, 0, SEEK_SET);
fscanf(myfile, "%d", &num2); // the atribution does not occur
// num2 keeps previous value
printf("%d", num2);
fclose(myfile);
}

Live example on Wandbox

关于c - 如何在 C 语言中正确使用 fscanf 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54848589/

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