计算机二级-C语言-对文件的读写操作。链表的定义与赋值。对字符串的遍历和处理。
//程序填空题:在此程序中,通过定义学生结构体变量,存储了学生的学号,姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun()函数的功能是重写形参filename所指文件中最后一个学生的数据,即用新的覆盖旧的,其他的不变。
//重难点:结构体数据的定义。对文件的读写操作。双层for循环输出结构体的数据。
#include <stdio.h>
#define N 5
typedef struct student {
long sno;
char name[];
float score[];
} STU;
void fun(char *filename, STU n)
{ FILE *fp;
/**********found**********/
fp = fopen(filename, "rb+");//打开文件,这里填首地址,不加*号
/**********found**********/
fseek(fp, -(long)sizeof(STU), SEEK_END);//重定位流上的文件指针,第一参数类型为:FILE *stream,把指针指向最后一个数据。
/**********found**********/
fwrite(&n, sizeof(STU), , fp);
fclose(fp);
}
void main()
{ STU t[N]={ {,"MaChao", , , }, {,"CaoKai", , , },
{,"LiSi", , , }, {,"FangFang", , , },
{,"ZhangSan", , , }};
STU n={,"ZhaoSi", , , }, ss[N];
int i,j; FILE *fp;
fp = fopen("student.dat", "wb");
fwrite(t, sizeof(STU), N, fp);
fclose(fp);
fp = fopen("student.dat", "rb");
fread(ss, sizeof(STU), N, fp);
fclose(fp);
printf("\nThe original data :\n\n");
for (j=; j<N; j++)//for双层循环进行结构体数据的遍历输出。
{ printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);
for (i=; i<; i++) printf("%6.2f ", ss[j].score[i]);
printf("\n");
}
fun("student.dat", n);
printf("\nThe data after modifing :\n\n");
fp = fopen("student.dat", "rb");
fread(ss, sizeof(STU), N, fp);
fclose(fp);
for (j=; j<N; j++)
{ printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);
for (i=; i<; i++) printf("%6.2f ", ss[j].score[i]);
printf("\n");
}
}
//程序修改题:在此程序中,函数Creatlink的功能是:创建带头节点的单向链表,使它能得出正确结果。
//重难点:结构体类型链表的定义。链表数据的赋值,malloc()函数内存申请。处理前进行表头的备份。
#include <stdio.h>
#include <stdlib.h>
typedef struct aa
{ int data;
struct aa *next;
} NODE;
NODE *Creatlink(int n, int m)
{ NODE *h=NULL, *p, *s;
int i;
/**********found***********/
p=(NODE *)malloc(sizeof(NODE));//变量p指向刚分配的结构节点指针,(NODE *)表示类型,就好比(int),这里进行内存申请
h=p;//使用临时变量h保存p指针的初始位置。
p->next=NULL;
for(i=; i<=n; i++)
{ s=(NODE *)malloc(sizeof(NODE));//定义一个s进行数据的复制
s->data=rand()%m; s->next=p->next;
p->next=s; p=p->next;
}
/**********found***********/
return h;
}
void outlink(NODE *h)
{ NODE *p;
p=h->next;//从新定义个指针指向h,进行数据的输出
printf("\n\nTHE LIST :\n\n HEAD ");
while(p)
{ printf("->%d ",p->data);
p=p->next;
}
printf("\n");
}
void main()
{ NODE *head;//定义结构体类型链表指针
head=Creatlink(,);//函数返回链表表头
outlink(head);
}
//程序设计题:在此程序中,编写fun()函数,它的功能是:统计一行字符串中单词的个数,作为函数的返回值。字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开头没有空格。
//重难点:思路为遍历整个字符串,然后遇见空格,就进行它的前一个字符的判断,如果不为空格就代表一个单词。
#include<string.h>
#include<stdio.h>
#define N 80
int fun(char *s)
{
int i=;//默认输入的单词最后不是以空格结尾,所以加1。
char a;
for (*s;*s!='\0'; s++)//字符串以‘\0’结尾
{
if (*s == ' ')
{
a = *(s - );
//a = *(--s);//这里尽量不要使用--s,这样的话指针位置会改变。
if (a >= 'a'&&a <= 'z')//这里是大于等于
{
i = i + ;
//s=s+1;
}
}
}
return i;
}
void main()
{
FILE *wf;
char line[N];
int num=;
printf("Enter a string:\n ");
gets(line);
num=fun(line);
printf("The number of word is:%d\n\n ",num);
/******************************/
wf=fopen("out.dat","w");
fprintf(wf,"%d",fun("a big car"));
fclose(wf);//断开文件指针和文件之间的联系。
/*****************************/
}
计算机二级-C语言-对文件的读写操作。链表的定义与赋值。对字符串的遍历和处理。的更多相关文章
- C语言对文件的读写操作以及处理CSV文件的方法
#include <stdio.h> #define F_PATH "d:\myfile\file.txt" int main(void) { FILE *fp = N ...
- 计算机二级C语言选择题错题知识点记录。
计算机二级C语言选择题错题知识点记录. 1,在数据流图中,用标有名字的箭头表示数据流.在程序流程图中,用标有名字的箭头表示控制流. 2,结构化程序设计的基本原则:自顶向下,逐步求精,模块化,限制使用g ...
- 计算机二级-C语言-程序填空题-190107记录
//给定程序的功能是:调用fun函数建立班级通讯录.通讯中记录每位学生的编号,姓名和电话号码.班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块(代表要使用结构体)写到名为myfile5.d ...
- INI 文件的读写操作
在C#中对INI文件进行读写操作,在此要引入using System.Runtime.InteropServices; 命名空间,具体方法如下: #region 变量 private static r ...
- Android 对 properties文件的读写操作
-. 放在res中的properties文件的读取,例如对放在assets目录中的setting.properties的读取:PS:之所以这里只是有读取操作,而没有写的操作,是因为我发现不能对res下 ...
- C++学习48 对ASCII文件的读写操作
如果文件的每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件(或称字符文件).程序可以从ASCII文件中读入若干个字符,也可以向它输出一些字符. 对ASCI ...
- Delphi- ini文件的读写操作
一.读INI文件示例 procedure TForm1.FormCreate(Sender: TObject); Var MyIni :Tinifile; glAppPath :string; beg ...
- android报错及解决2--Sdcard进行文件的读写操作报的异常
报错描述: 对Sdcard进行文件的读写操作的时候,报java.io.FileNotFoundException: /sdcard/testsd.txt (Permission denied),在往S ...
- java文件的读写操作
java文件的读写操作主要是对输入流和输出流的操作,由于流的分类很多,所以概念很容易模糊,基于此,对于流的读写操作做一个小结. 1.根据数据的流向来分: 输出流:是用来写数据的,是由程序(内存)--- ...
随机推荐
- 当你工作与生活迷茫时可以来看看 shuke
青春是用来奋斗的 很多人在还没工作的时候,总感觉自己有能力会混的不错.毕业几年后,发现社会跟学校完全是两个世界.不经常思考的人,惰性总会让人得过且过混日子,不思考未来的路怎么走,就等于你安于现状,接受 ...
- CentOS7识别不到win10启动项的解决方法
Windows的文件系统是NTFS格式的,而CentOS是不支持NTFS格式的.因此,我们要安装另外的工具使CentOS能识别NTFS格式的文件系统. 这里我们选择ntfs-3g这个工具,安装过程如下 ...
- Django框架介绍(二)
1.MVC框架和MTV框架 MVC全名model view controller,是软件工程中的一种软件架构模式,把软件分为三个基本部分:模型(model).视图(view)和控制器(controll ...
- RS-232C
RS-232C标准(协议)的全称是EIA-RS-232C标准,定义是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准".它是在1970年由美国电子 ...
- 寒假安卓app开发学习记录(6)
今天把之前学过的内容复习了一遍,然后用了大概一个小时的时间看了看教学视频. 学到的主要内容是如何调试Android程序,以及Android的应用以及打包过程. 调试: 依次点击Run“-”Atta ...
- MongoDB高可用集群配置方案
原文链接:https://www.jianshu.com/p/e7e70ca7c7e5 高可用性即HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非 ...
- php商城数据库的设计 之无限分类
商品分类,使用无限分类 即: -------如何创建数据表 pid---父级分类id,如果是顶级分类则为0 path---1,用户分类的排序 . 排序示例: 实现逻辑:获取type表的所有分类,ord ...
- PHP高并发和大流量怎么解决?
PHP高并发和大流量的解决方案 一 高并发的概念 在互联网时代,并发,高并发通常是指并发访问.也就是在某个时间点,有多少个访问同时到来. 二 高并发架构相关概念 1.QPS (每秒查询率) : 每秒钟 ...
- python 变量的赋值【内存地址】
注意: python所有的数据都是对象,变量只是指向一个对象的地址,一旦将变量的值或者类型改变,变量指向的地址就有可能发生变化 这个特性在使用默认参数的时候一定要注意
- tomcat查看当前内存
查看运行中的tomcat内存非常简单,只需运行一下此界面就可以看到. <html> <head><meta http-equiv="Content-Type&q ...