1> 使用fgets统计一个文件的行号
#include
#include
#include
int main(int argc, const char *argv[])
{
FILE *file;
char line[1024];
int count=0;
file=fopen("test.txt","r");
if(file==NULL)
{
perror("无法打开文件");
return -1;
}
while(fgets(line,sizeof(line),file)!=NULL)
{
count++;
}
fclose(file);
printf("文件有 %d 行\n",count);
return 0;
}
2> 使用fgets、fputs完成两个文件的拷贝
#include
#include
#include
int main(int argc, const char *argv[])
{
FILE *file,*file1;
char buffer[1024]="";
if(argc!=3)
{
return -1;
}
file=fopen(argv[1],"r");
if(file==NULL)
{
perror("未找到文件");
fclose(file);
return -1;
}
file1=fopen(argv[2],"w");
if(file1==NULL)
{
perror("打开文件失败");
fclose(file1);
return -1;
}
while(fgets(buffer,sizeof(buffer),file)!=NULL)
{
fputs(buffer,file1);
}
puts("文件拷贝成功");
fclose(file);
fclose(file1);
return 0;
}
3> 向文件中输出当前的系统时间
#include
#include
#include
#include
#include
int main(int argc, const char *argv[])
{
FILE *file;
int count=0;
file=fopen("time.txt","a");
if(file==NULL)
{
perror("未找到文件");
return -1;
}
FILE *lineNumberFile=fopen("time.txt","r");
int lineNumber=0;
char line[1024]="";
while(fgets(line,sizeof(line),lineNumberFile)!=NULL)
{
lineNumber++;
}
fclose(lineNumberFile);
printf("lineNumber=%d\n",lineNumber);
while(1)
{
count++;
time_t sys_time=0;
time(&sys_time);
struct tm *t=localtime(&sys_time);
char timeString[100]="";
sprintf(timeString,"%d: %4d-%2d-%2d %2d:%2d:%2d\n",lineNumber+count,t->tm_year+1900,\
t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec);
printf("%s\n",timeString);
fputs(timeString,file);
fflush(file);
sleep(1);
}
fclose(file);
return 0;
}