要求拷贝一个文件,例如将1.c中的内容拷贝到2.c中
要求计算一个文件的大小。
要求计算一个文件有几行。文件的最后一行也有一个'\n'
fgets遇到\n会停止读取,所以\n肯定在\0的前一位,即查看fgets读取有的有效字符串最后一位是不是\n即可。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
FILE *fp = fopen("text.txt","r");
if(NULL == fp)
{
perror("fopen");
return -1;
}
FILE *fp1 = fopen("text1.txt","w");
if(NULL == fp1)
{
perror("fopen");
return -1;
}
//拷贝
/* char s[64] = "";
while(NULL != fgets(s,sizeof(s),fp))
{
fputs(s,fp1);
}
*/
//文件大小
/*
char s[2] = "";
int h = 0;
while(NULL != fgets(s,sizeof(s),fp))
{
i++;
fputs(s,fp1);
}
*/
//行数
char s[2] = "";
int h = 0;
while(NULL != fgets(s,sizeof(s),fp))
{
if('\n' == s[0])
h++;
}
printf("行数:%d\n",h);
fclose(fp);
fclose(fp1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
int main(int argc, const char *argv[])
{
FILE *fp = fopen("./time.txt","a");
if(NULL == fp)
{
perror("fopen");
return -1;
}
time_t ti;
struct tm *info = NULL;
int i = 0;
while(i < 3)
{
time(&ti);
info = localtime(&ti);
fprintf(fp,"[%d] %d-%02d-%02d %02d:%02d:%02d\n",\
i+1,info->tm_year+1900,info->tm_mon+1,info->tm_mday,\
info->tm_hour,info->tm_min,info->tm_sec);
sleep(1);
i++;
}
return 0;
}
touch有一个usr.txt的文件,其中存储着用户的账户和密码,格式如下:
zhangsan aaaa
lisi bbbbb
空格前面是账户,空格后面是密码,一行一个账户、密码
要求如下:
从终端获取一个账户名和密码
判断是否能够登录成功
若账户不存在:则提示账户不存在
若账户存在,密码不匹配:则提示密码错误
账户密码均存在:则显示登录成功。
第三个作业:实现注册功能,同一用户名不能重复注册
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void Log_in(FILE *fp)
{
rewind(fp);
char name1[10] = "";
char password1[10] = "";
printf("输入用户名:");
scanf("%s",name1);
printf("输入密码:");
scanf("%s",password1);
char name[10];
char password[10];
int s = 0;
while(1)
{
if(fscanf(fp,"%s %s",name,password) == EOF)
{
printf("用户名不存在,请先注册\n");
return;
}
if(0 != strcmp(name,name1))
{
continue;
}
if(0 == strcmp(password,password1))
{
printf("登录成功\n");
}
else
{
printf("密码错误\n");
}
return;
}
}
void Register(FILE *fp)
{
rewind(fp);
char name1[10] = "";
printf("输入用户名:");
scanf("%s",name1);
char name[10] = "";
char password[10] = "";
while(1)
{
if(fscanf(fp,"%s %s",name,password) == EOF)
{
break;
}
if(0 == strcmp(name,name1))
{
printf("用户名以存在,重新选择\n");;
return;
}
}
char password1[10] = "";
printf("输入密码:");
scanf("%s",password1);
fputs(name1,fp);
fputc(' ',fp);
int s = fputs(password1,fp);
fputc('\n',fp);
fflush(fp);
if(s >= 0)
{
printf("注册成功\n");
}
}
int main(int argc, const char *argv[])
{
//打开一个文件以读的方式
FILE *fp = fopen("./usr.txt","a+");
if(NULL == fp)
{
perror("fopen");
return -1;
}
while(1)
{
printf("***************************************************\n");
printf("** 1. 登录 2. 注册 0. 退出 **\n");
printf("***************************************************\n");
int n = 0;
printf("请输入你的选择:");
scanf("%d",&n);
switch(n)
{
case 1:
Log_in(fp);
fflush(fp);
break;
case 2:
Register(fp);
fflush(fp);
break;
case 0:
return -1;
break;
default:
printf("输入有误重新输入\n");
break;
}
}
return 0;
}