龙空技术网

C语言define、typedef以及文件处理fopen系列函数

抖点料er 413

前言:

如今姐妹们对“c语言怎么输入eof”大概比较着重,咱们都想要知道一些“c语言怎么输入eof”的相关内容。那么小编同时在网上汇集了一些有关“c语言怎么输入eof””的相关知识,希望咱们能喜欢,各位老铁们快快来学习一下吧!

1.typefine函数

typedef是一种高级数据特性,它能使某一类型创建自己的名字。

typedef unsigned char BYTE

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>typedef unsigned char BYTE;struct man{	char name[20];	BYTE age;};typedef struct man M;//M就类似于int,就是一种数据类型了typedef short SHORT;int main0901(){	M m;	m.age = 20;	BYTE a = 0;	SHORT a1;//若想修改大量同类型数据,直接在typedef中修改SHORT	SHORT a2;	SHORT a3;	SHORT a4;	SHORT a5;	return 0;}

2.在堆空间中处理结构体数组的指针成员

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h>//根据用户输入结构体成员具体数量来输出struct man{	char *name;	int age;	int classid;};int main(){	struct man* p = NULL;// calloc(10, sizeof(struct man));//在堆中分配10给man的空间		//for (int i = 0; i < 10; i++)	int i = 1;	while (1)	{		printf("please input name:\n");		char temp[1024] = { 0 };		scanf("%s", temp);		//如果用户名字为exit,退出循环		if (strcmp(temp, "exit") == 0)			break;				p = realloc(p, sizeof(struct man) * i);		p[i-1].name = malloc(strlen(temp) + 1);		strcpy(p[i-1].name, temp);		printf("please input age:\n");		scanf("%d", &p[i-1].age);		printf("please input classid:\n");		scanf("%d", &p[i-1].classid);			i++;	}		for (int j = 0; j < i - 1; j++)	{		printf("%s,%d,%d\n", p[j].name, p[j].age, p[j].classid);	}	for (int j = 0; j < i - 1; j++)	{		free(p[j].name);//分别释放离散堆空间	}	free(p);//释放堆中连续空间	return 0;}

输入任意结构体数组成员个数的信息打印结果

3.fopen

file*fopen(const char*path,const char*mode);

fopen打开文件成功,返回有效file的有效地址,失败返回NULL。

path就是制定打开文件的路径,可以是相对路径,也可以是绝对路径,mode有以下值:

Mode

含义

r

以只读方式打开文件,该文件必须存在,文件必须可读。

r+

以可读可写方式打开文件,该文件必须存在。

rb+

读写打开一个二进制文件,循序读写数据,文件必须存在。

rw+

读写打开一个文本文件,允许读写。

w

打开只写文件,若文件存在则文件长度清0,即改文件内容消失,若文件不存在,则创建该文件。

w+

打开可读文件,若文件存在则文件长度清0,即该文件内容消失。若文件不存在,则创建该文件。

a

以附加的方式打开只写文件。若文件不存在,则会创建该文件,若存在写入数据会被追加到文件尾,即文件原先内容保留。(EOF符保留)

a+

以附加的方式打开可读可写文件。若文件不存在,则会创建改文件,若文件存在,写入的数据会被追加到文件尾后,即文件原先内容保留。(EOF符不保留)

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main0101(){	char a[] = "F:/a.txt";	FILE* p = fopen(a, "r+");	if (p)	{			//printf("success\n");		char c = getc(p);		while(c!=EOF)			{ 			printf("%c", c);			 c = getc(p);		}		fclose(p);	}	else		printf("fail\n");	return 0;} int main0102(){	FILE* p = fopen("F:/a.txt", "w");	if (p)	{		putc('a', p);		putc('b', p);		putc('\n', p);		fclose(p);	}	return 0;}
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>//通过putc写指定文件int main0201(int argc, char** args){	if (argc < 2)		return 0;	FILE* p = fopen(args[1], "w");	if (p)	{		while (1)		{			char c = getchar();			if (c == '0')				break;			putc(c, p);		}		fclose(p);	}	return 0;}//通过getc读指定文件int main0202(int argc, char** args){	if (argc < 2)		return 0;	FILE* p = fopen(args[1], "r");	if (p)	{		char c = getc(p);		while (c != EOF)		{			printf("%c\n", c);			c = getc(p);		}	fclose(p);	}	return 0;}

4.fget、fputs

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h>int main0401(int argc,char**args)//fgets文件行操作{	if (argc < 2)		return 0;	FILE* p = fopen(args[1], "w");//自定义文件名称 	if (p)	{		while (1)		{			char buf[1024] = { 0 };			fgets(buf, sizeof(buf), stdin);//stdin标准输入,即键盘输入			//从键盘输入sizeof(buf)个大小保存到buf中			if (strncmp(buf, "exit", 4) == 0)//退出循环条件				break;			fputs(buf, p);		}		fclose(p);	}	return 0; }//读取文件中的内容//feof函数 检测到文件结束标识返回1,否则返回0。 int main0402(){	FILE* p = fopen("F:/a.txt", "r");	while (!feof(p))//只要不到文件结尾循环就继续 	{		char buf[1024] = { 0 };		fgets(buf, sizeof(buf), p);//从p中读取1行储存到buf中		printf("%s", buf);	}	fclose(p);	return 0;}

5.利用fputs和fgets实现我文件加密解密

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h>void decode(char* s){	int len = 0;	while (s[len])	{		s[len]++;//改变这个值		len++;//遍历字符串	}}void encode(char* s){	int len = 0;	while (s[len])	{		s[len]--;		len++;	}}int main0501(int argc, char** args){	if (argc < 4)		return 0;	FILE* p1 = fopen("F:/a.txt", "r");	if (p1 == NULL);	return 0;	FILE* p2 = fopen(args[2], "w");	if (p2 == NULL)		return 0;	while (!feof(p1))	{		char buf[1024] = { 0 };		fgets(buf, sizeof(buf), p1);		if (args[3][0] == '0')			decode(buf);		else			encode(buf);		fputs(buf, p2);	}	fclose(p1);	fclose(p2);	return 0;}

标签: #c语言怎么输入eof