使用不同模式的文件进行C编程? #包括 int main() { 文件*fp; 字符buff[255]; fp=fopen(“test.txt”,“w”); printf(“w模式下的文件test.txt\n”); fprintf(fp,“模板字符串1:\n”); fputs(“模板字符串2:”,fp); printf(“文件test.txt是在本地路径创建的\n\n”); fclose(fp); fp=fopen(“test.txt”、“r”); printf(“\n\n r模式下的file test.txt\n”); fscanf(fp,“%s”,浅黄色); printf(“使用fscanf()的test.txt文件的内容是:\n%s\n”,buff); fgets(buff,255,(文件*)fp); printf(“使用fgets()的test.txt文件的内容是:\n%s\n”,buff); fgets(buff,255,(文件*)fp); printf(“使用fgets()的文件内容是:\n%s\n”,buff); fclose(fp); fp=fopen(“test.txt”,“a”); printf(“\n\n模式中的file test.txt”); fprintf(fp,“模板字符串3:\n”); fgets(buff,255,(文件*)fp); printf(“在附加%s\n之后”,buff); fclose(fp); fp=fopen(“test.txt”、“r+”); printf(“r+模式下的文件test.txt\n”); fgets(buff,255,(文件*)fp); printf(“\n\n文件test.txt在r+模式下的内容是:\n%s\n”,buff); fclose(fp); }
我有我理解的上述代码。我怀疑当我附加字符串“Template string 3:”时,我的fp将内容添加到文件末尾的文件使用不同模式的文件进行C编程? #包括 int main() { 文件*fp; 字符buff[255]; fp=fopen(“test.txt”,“w”); printf(“w模式下的文件test.txt\n”); fprintf(fp,“模板字符串1:\n”); fputs(“模板字符串2:”,fp); printf(“文件test.txt是在本地路径创建的\n\n”); fclose(fp); fp=fopen(“test.txt”、“r”); printf(“\n\n r模式下的file test.txt\n”); fscanf(fp,“%s”,浅黄色); printf(“使用fscanf()的test.txt文件的内容是:\n%s\n”,buff); fgets(buff,255,(文件*)fp); printf(“使用fgets()的test.txt文件的内容是:\n%s\n”,buff); fgets(buff,255,(文件*)fp); printf(“使用fgets()的文件内容是:\n%s\n”,buff); fclose(fp); fp=fopen(“test.txt”,“a”); printf(“\n\n模式中的file test.txt”); fprintf(fp,“模板字符串3:\n”); fgets(buff,255,(文件*)fp); printf(“在附加%s\n之后”,buff); fclose(fp); fp=fopen(“test.txt”、“r+”); printf(“r+模式下的文件test.txt\n”); fgets(buff,255,(文件*)fp); printf(“\n\n文件test.txt在r+模式下的内容是:\n%s\n”,buff); fclose(fp); },c,file,append,fopen,C,File,Append,Fopen,我有我理解的上述代码。我怀疑当我附加字符串“Template string 3:”时,我的fp将内容添加到文件末尾的文件test.txt,添加fp后应该指向文件末尾(我希望如此),但如果我使用fgets将文件内容从fp读取到buff,它应该有什么。谁能解释一下此刻发生了什么 C库函数char*fgets(char*str,int n,FILE*stream)从指定流中读取一行,并将其存储到str指向的字符串中。当读取(n-1)个字符、读取换行符或到达文件结尾时(以先到者为准),该函数停止 这就是
test.txt
,添加fp后应该指向文件末尾(我希望如此),但如果我使用fgets
将文件内容从fp读取到buff,它应该有什么。谁能解释一下此刻发生了什么
C库函数
char*fgets(char*str,int n,FILE*stream)
从指定流中读取一行,并将其存储到str指向的字符串中。当读取(n-1)个字符、读取换行符或到达文件结尾时(以先到者为准),该函数停止
这就是为什么代码的最后一部分只显示文件的第一行。以及您没有获得printf输出的原因(“在附加%s\n之后”,buff)
表示此时文件指针位于EOF
当您
cat
文件时,您会看到所有的行都在那里。请不要发布文本的图片定义为file*fp代码>使用(文件*)fp
是“无害的”,但很可笑。
#include<stdio.h>
int main()
{
FILE *fp;
char buff[255];
fp=fopen("test.txt","w");
printf("File test.txt in w mode\n");
fprintf(fp,"Template string 1:\n");
fputs("Template string 2:",fp);
printf("File test.txt is created at local path\n\n");
fclose(fp);
fp=fopen("test.txt","r");
printf("\n\nFile test.txt in r mode\n");
fscanf(fp,"%s",buff);
printf("The content of the file test.txt using fscanf() is:\n%s\n",buff);
fgets(buff,255,(FILE *)fp);
printf("The content of the file test.txt using fgets() is :\n%s\n",buff);
fgets(buff,255,(FILE *)fp);
printf("The content of the file using fgets() is :\n%s\n",buff);
fclose(fp);
fp=fopen("test.txt","a");
printf("\n\nFile test.txt in a mode\n");
fprintf(fp,"Template String 3:\n");
fgets(buff,255,(FILE *)fp);
printf("After append %s\n",buff);
fclose(fp);
fp=fopen("test.txt","r+");
printf("File test.txt in r+ mode\n");
fgets(buff,255,(FILE *)fp);
printf("\n\nThe content of the file test.txt in r+ mode is:\n%s\n",buff);
fclose(fp);
}