C 文本文件的副本
这是我从我的教授那里得到的一个代码,但我不完全理解它,因为它到达了while循环。 谁能给我解释一下:C 文本文件的副本,c,file,text,scanf,printf,C,File,Text,Scanf,Printf,这是我从我的教授那里得到的一个代码,但我不完全理解它,因为它到达了while循环。 谁能给我解释一下: while(fscanf(pin,“%[^\n]”,line)!=EOF) fscanf(pin,“%1[\n]”,虚拟) 行[0]='\0' 顺便说一下,要复制的文本文件包含: 第1行 (空间) 第2行 (空间) (空间) 第3行 (空间) (空间) (空间) 第4行 #include <stdio.h> #define LNAME 31 #define LLINE 81 in
while(fscanf(pin,“%[^\n]”,line)!=EOF)
fscanf(pin,“%1[\n]”,虚拟)代码>
行[0]='\0'代码>
#include <stdio.h>
#define LNAME 31
#define LLINE 81
int main(void)
{
FILE *pin, *pout;
char name_in[LNAME], name_out[LNAME], line[LLINE];
char dummy[LLINE];
do
{
printf("Enter name of input file : ");
scanf("%30s", name_in);
pin = fopen(name_in, "r");
} while(pin == NULL);
do
{
printf("Enter name of output file: ");
scanf("%30s", name_out);
pout = fopen(name_out, "w");
} while(pout == NULL);
while(fscanf(pin, "%[^\n]", line) != EOF)
{
fprintf(pout, "%s\n", line); /*In output file */
printf("%s\n", line); /*Echo on screen */
fscanf(pin, "%1[\n]", dummy); /*skip over '\n' */
line[0] = '\0'; /*important, when next line empty!!! */
}
fclose(pin);
fclose(pout);
printf("\n\n");
return 0;
}
#包括
#定义LNAME 31
#第81页
内部主(空)
{
锉刀*pin,*pout;
字符名称输入[LNAME],名称输出[LNAME],行[LLINE];
伪字符[LLINE];
做
{
printf(“输入输入文件名:”);
scanf(“%30s”,名称在中);
pin=fopen(名称在“r”中);
}while(pin==NULL);
做
{
printf(“输入输出文件的名称:”);
scanf(“%30s”,name_out);
pout=fopen(名称“w”);
}while(pout==NULL);
while(fscanf(pin,“%[^\n]”,line)!=EOF)
{
输出文件中的fprintf(pout,“%s\n”,行);/**/
printf(“%s\n”,第行);/*屏幕上的回声*/
fscanf(引脚“%1[\n]”,虚拟);/*跳过“\n”*/
行[0]='\0';/*重要,下一行为空*/
}
fclose(pin);
fclose(撅嘴);
printf(“\n\n”);
返回0;
}
您应该看看。解释如下:
while(fscanf(pin,“%[^\n]”,line)!=EOF)
:
继续读取任意数量的字符,直到到达第\n行。当达到EOF时,代码继续,即循环结束时fscanf(pin,“%1[\n]”,虚拟)代码>:
读取“\n”并将其放入虚拟。此行可以更改为fscanf(pin,“%*1[\n]”代码>
行[0]='\0'代码>
这会将终止字符放在行的开头,以便可以用来读取下一行
非常感谢。帮了我很多忙!:)