gpt4 book ai didi

c - 如何用 c 写入文本文件(具有预期功能)

转载 作者:行者123 更新时间:2023-11-30 15:34:38 24 4
gpt4 key购买 nike

我正在尝试学习写入数据(字符、整数和字符串)的语法。我研究了以下链接http://web.cs.swarthmore.edu/~newhall/unixhelp/C_files.html的内容并编写了以下代码。该代码的目的是通过以下方式将数据存储在文本文件中:

33
你好

15
好的

如果我输入以下内容:33、Hello、15、Ok 和 0。但是当我运行程序后打开它时,文本文件完全是空白的。这里有没有人擅长在文本文档中存储数据,可以给我一些关于我做错了什么的提示?或者您知道其他什么好的教程吗?

我的测试代码附在下面[我可以编译并运行它,没有任何问题,只是它没有做我期望的事情:( ]

char stdin_buff[20];
int stdin_int;
FILE *fp;
char *filename = "data.txt"; //name of the textfile where the data should be stored

void handle_String_input(char msg[]){
fp = fopen(filename, "w"); //opens the text file in write mode
if(fp==NULL){
printf("Unable to open the file! \n");
}
fseek(fp, 1, SEEK_END); //seek the end of the text file
fputs(msg,fp); //writes the message to the text file
putc('\n',fp); //new line in the text document
putc('\n',fp); //new line in the text document
fclose(fp); //closes the text file
}

void handle_Integer_input(int nbr){
fp = fopen(filename, "w"); //opens the text file in write mode
if(fp==NULL){
printf("Unable to open the file! \n");
}
fseek(fp, 1, SEEK_END); //seek the end of the text file
fputc(nbr,fp); //writes the nbr into the text file
putc('\n',fp); //new line in the text document
fclose(fp); //closes the text file
}

void main(){
while(1){
memset(stdin_buff,'\0',10); //clears the content of stdin_buff
printf("Enter an integer(enter 0 to exit): ");
fgets(stdin_buff,9,stdin); //retrieves an input from keyboard(the user is expected to only use the numbers 0-9)
stdin_int=atoi(stdin_buff);
handle_Integer_input(stdin_int);
if(stdin_int==0){
break;
}
memset(stdin_buff,'\0',10); //clears the content of stdin_buff
printf("Enter a string(enter 0 to exit): ");
fgets(stdin_buff,9,stdin); //retrieves input from keyboard
handle_String_input(stdin_buff);
if(stdin_buff[0]=='0'){
break;
}
}
}

我错过/不明白什么?如有任何改进建议,我们将不胜感激!

最佳答案

在 fopen 语句中,使用“a”(表示追加)而不是“w”。 “w”clears the file .

目前,如果您通过输入整数“0”结束交互式 session ,则文件将显示为空。如果以字符串“0”结尾,您应该只看到字符 0。

关于c - 如何用 c 写入文本文件(具有预期功能),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23204862/

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