练习13-1
//打开与关闭文件
#include <stdio.h>
int main()
{
FILE* fd;
char str[128];
printf("请输入你要打开的文件n");
scanf("%s", str);
fd = fopen("*str","r");//只读方式打开
if (fd == NULL)
{
puts("无法打开abc这个文件");
}
else
{
puts("成功打开了abc这个文件");
fclose(fd);
}
return 0;
}
练习13-2
//只写打开文件,清除原有内容
#include <stdio.h>
int main()
{
FILE *fp;
char file_name[128];
printf("请输入你要清除的文件file namen");
scanf("%s",file_name);
fp = fopen(file_name, "w");
if (fp == NULL)
printf("a无法打开文件"%s"。n",file_name);
else {
printf("a成功打开了文件"%s"。n",file_name);
fclose(fp);
}
return 0;
}
练习13-3
#include <stdio.h>
#define NUMBER 5
typedef struct{
char name[100]; /* 姓名 */
double height; /* 身高 */
double weight; /* 体重 */
}Student;
void swap_Student(Student* x, Student* y)
{
Student tmp = *x;
*x = *y;
*y = tmp;
}
void sort_by_height(Student a[], int n)
{
int i,j;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j].height > a[j+i].height)
{
swap_Student(&a[j],&a[j-1]);
}
}
}
}
int main(void)
{
FILE *fp;
int ninzu = 0; /* 人数 */
char name[100]; /* 姓名 */
double height, weight; /* 身高,体重 */
double hsum = 0.0; /* 身高合计 */
double wsum = 0.0; /* 体重合计 */
Student std[NUMBER];//Student stu[] = { { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 } };
if ((fp = fopen("hw.dat", "r")) == NULL) /* 打开文件 */
printf("a文件打开失败。n");
else {
while (fscanf(fp, "%s%lf%lf", name, &height, &weight) == 3)
{
printf("%-10s %5.1f %5.1fn", name, height, weight);
hsum += height;
wsum += weight;
ninzu++;
}
sort_by_height(std, NUMBER);
puts("按身高排序后");
for (ninzu = 0; ninzu<NUMBER; ninzu++){
printf("%-10s %5.1f %5.1fn", std[ninzu].name, std[ninzu].height, std[ninzu].weight);
}
printf("----------------------n");
printf("平均 %5.1f %5.1fn", hsum / ninzu, wsum / ninzu);
fclose(fp); /* 关闭文件 */
}
return 0;
}
练习13-4
//有bug
#include <stdio.h>
int main()
{
FILE *fp;
int ninzu = 0; /* 人数 */
char name[100]; /* 姓名 */
double height, weight; /* 身高,体重 */
if ((fp = fopen("abc.txt", "w")) == NULL) /* 打开要写入的文件 */
{
printf("a文件打开失败。n");
}
else
{
printf("输入姓名,身高,体重n");
while (scanf("%s%lf%lf", name, &height, &weight) == 3)
{
fprintf(fp,"%-10s %5.1f %5.1fn", name, height, weight);
}
}
fclose(fp); /* 关闭文件 */
printf("done!");
return 0;
}
//这个是别人的思路,没有bug
#include <stdio.h>
#define ninzu 5
typedef struct {
char name[100]; /* 姓名 */
int height; /* 身高 */
int weight; /* 体重 */
} Student;
int main(void)
{
FILE* fp;
if ((fp = fopen("abc.txt", "w")) == NULL) /* 打开文件 */
printf("a文件打开失败。n");
else {
int i;
Student stu[] = { { 0 }, { 0 }, { 0 }, { 0 }, { 0 }
};
puts("输入姓名,身高,体重");
for (i = 0; i < ninzu; i++) {
scanf("%s%d%d", stu[i].name, &stu[i].height, &stu[i].weight);
fprintf(fp, "%s %d %dn", stu[i].name, stu[i].height, stu[i].weight);
}
fclose(fp);
}
return 0;
}
练习13-5
/*显示程序上一次运行时的日期和时间*/
#include <time.h>
#include <stdio.h>
char data_file[] = "datetime.dat"; /* 文件名 */
/*--- 取得并显示上一次运行时的日期和时间 ---*/
void get_data(void)
{
FILE* fp;
if ((fp = fopen(data_file, "r")) == NULL) /* 打开文件 */
{printf("本程序第一次运行。n");
}
else {
int year, month, day, h, m, s;
char mood[120];
fscanf(fp, "%d%d%d%d%d%d%s", &year, &month, &day, &h, &m, &s,mood);
printf("上一次运行是在%d年%d月%d日%d时%d分%d秒,心情%sn",
year, month, day, h, m, s,mood);
fclose(fp); /* 关闭文件 */
}
}
/*--- 写入本次运行时的日期和时间 ---*/
void put_data(void)
{
FILE* fp;
char mood[120];
time_t current = time(NULL); /* 当前日历时间 */
struct tm* timer = localtime(¤t); /* 分解时间*/
if ((fp = fopen(data_file, "w")) == NULL) /* 打开文件 */
printf("a文件打开失败。n");
else {
printf("当前的心情是:");
scanf("%s", mood);
fprintf(fp, "%d %d %d %d %d %d %sn",
timer->tm_year + 1900, timer->tm_mon + 1, timer->tm_mday,
timer->tm_hour, timer->tm_min, timer->tm_sec,mood);
fclose(fp); /* 关闭文件 */
}
}
int main(void)
{
get_data(); /* 取得并显示上一次运行时的日期和时间 */
put_data(); /* 写入本次运行时的日期和时间 */
return 0;
}
练习13-6
#include <stdio.h>
int main(void)
{
int ch;
int cnt = 0;
FILE *fp;
char name[FILENAME_MAX];//文件名
puts("输入文件名");
scanf("%s",name);//数组名不用取地址
if((fp = fopen(name,"r")) == NULL) //打开文件
{
printf("文件打开失败。n");
}
else
{
while((ch = fgetc(fp)) != EOF)
{
if(ch == 'n')
{
cnt += 1;
}
putchar(ch);//里面的内容也打印出来
}
printf("一共有%d行",cnt);
fclose(fp);
}
return 0;
}
练习13-7
#include <stdio.h>
char file_name[128];
int main(void)
{
int ch;
int ch_num = 0;
FILE *fp;
printf("input filename:");
scanf("%s",file_name);
if ((fp = fopen(file_name, "r")) == NULL)
{
printf("文件打开失败。n");
}
else
{
while ((ch = fgetc(fp)) != EOF)
{
if (ch >' '){ //if(ch!='n')这个条件空格也算
ch_num++;
}
}
printf("file has character number:%d",ch_num);
}
return 0;
}
练习13-8
#include <stdio.h>
int main(void)
{
int ch;
FILE *sfp; /* 原文件 */
FILE *dfp; /* 目标文件 */
char sname[FILENAME_MAX]; /* 原文件名 */
char dname[FILENAME_MAX]; /* 目标文件名 */
printf("打开原文件:"); scanf("%s", sname);
printf("打开目标文件:"); scanf("%s", dname);
if ((sfp = fopen(sname, "r")) == NULL) /* 打开原文件 */
printf("a原文件打开失败。n");
else {
if ((dfp = fopen(dname, "w")) == NULL) /* 打开目标文件 */
{
printf("a目标文件打开失败。n");
}
else {
while ((ch = fgetc(sfp)) != EOF)//读取文件内容不是空的
{
fputc(ch, dfp); //复制内容到目标文件
putchar(ch); //打印复制过来的内容
}
fclose(dfp); /* 关闭目标文件 */
}
fclose(sfp); /* 关闭原文件 */
}
return 0;
}
练习13-9
#include <stdio.h>
#include <ctype.h>
int main()
{
char c = 'a';
c = toupper(c);
printf("%cn", c);
return 0;
}
#include <stdio.h>
int main(void)
{
int ch;
FILE* sfp; /* 原文件 */
FILE* dfp; /* 目标文件 */
char sname[FILENAME_MAX]; /* 原文件名 */
char dname[FILENAME_MAX]; /* 目标文件名 */
printf("打开原文件:"); scanf("%s", sname);
printf("打开目标文件:"); scanf("%s", dname);
if ((sfp = fopen(sname, "r")) == NULL) /* 打开原文件 */
{
printf("a原文件打开失败。n");
}
else {
if ((dfp = fopen(dname, "w")) == NULL) /* 打开目标文件 */
{
printf("a目标文件打开失败。n");
}
else {
while ((ch = fgetc(sfp)) != EOF)
{
ch=toupper(ch); //将小写字母转换为大写字母,toupper()函数
fputc(ch, dfp);
putchar(ch);
}
fclose(dfp); /* 关闭目标文件 */
}
fclose(sfp); /* 关闭原文件 */
}
return 0;
}
练习13-10
#include <stdio.h>
#include <ctype.h>
int main()
{
char c = 'A';
c = tolower(c);
printf("%cn", c);
return 0;
}
#include <stdio.h>
int main(void)
{
int ch;
FILE* sfp; /* 原文件 */
FILE* dfp; /* 目标文件 */
char sname[FILENAME_MAX]; /* 原文件名 */
char dname[FILENAME_MAX]; /* 目标文件名 */
printf("打开原文件:"); scanf("%s", sname);
printf("打开目标文件:"); scanf("%s", dname);
if ((sfp = fopen(sname, "r")) == NULL) /* 打开原文件 */
printf("a原文件打开失败。n");
else {
if ((dfp = fopen(dname, "w")) == NULL) /* 打开目标文件 */
printf("a目标文件打开失败。n");
else {
while ((ch = fgetc(sfp)) != EOF)
{
ch=tolower(ch); //将大写字母转换为小写字母,tolower()函数
fputc(ch, dfp);
putchar(ch);
}
fclose(dfp); /* 关闭目标文件 */
}
fclose(sfp); /* 关闭原文件 */
}
return 0;
}
练习13-11
#include <stdio.h>
int main(void)
{
double arr[10] = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.10};
int i;
for(i=0;i<10;i++)
{
printf("从数组得到的元素arr[%d]为%23.21f。n", i,arr[i]);
}
return 0;
}
练习13-12
借鉴练习13-12
#include <time.h>
#include <stdio.h>
char data_file[] = "datetime.dat";
void get_data(void)
{
FILE *fp;
if ((fp = fopen(data_file, "r")) == NULL)
printf("本程序第一次运行。n");
else {
int year, month, day, h, m, s;
fscanf(fp, "%d%d%d%d%d%d", &year, &month, &day, &h, &m, &s);
printf("上一次运行是在%d年%d月%d日%d时%d分%d秒。n",
year, month, day, h, m, s);
fclose(fp);
}
}
/*--- 写入本次运行时的日期和时间 ---*/
void put_data(void)
{
FILE *fp;
time_t current = time(NULL); /* 当前日历时间 */
struct tm *timer = localtime(¤t); /* 分解时间*/
if ((fp = fopen(data_file, "w")) == NULL) /* 打开文件 */
{
printf("a文件打开失败。n");
}
else
{
fwrite(&timer, sizeof(struct tm), 1, fp);//以二进制格式写入
fclose(fp);
}
}
int main(void)
{
get_data();/* 取得并显示上一次运行时的日期和时间 */
put_data();/* 写入本次运行时的日期和时间 */
return 0;
}
练习13-13
#include <stdio.h>
int main(void)
{
int n;
int ch;
FILE* sfp; /* 原文件 */
FILE* dfp; /* 目标文件 */
char sname[FILENAME_MAX]; /* 原文件名 */
char dname[FILENAME_MAX]; /* 目标文件名 */
printf("打开原文件:"); scanf("%s", sname);
printf("打开目标文件:"); scanf("%s", dname);
if ((sfp = fopen(sname, "rb")) == NULL)
printf("a原文件打开失败。n");
else
{
if ((dfp = fopen(dname, "wb")) == NULL)
printf("a目标文件打开失败。n");
else
{
while (n = fread(&ch, sizeof(int), 1, sfp) > 0)
{
fwrite(&ch, sizeof(int), 1, dfp);
}
fclose(dfp);
}
fclose(sfp);
printf("done!n");
}
return 0;
}
原文地址:https://blog.csdn.net/Good_go/article/details/134758053
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_33145.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。