快捷搜索:  汽车  科技

c语言中如何查看fopen创建的文件,typedef以及文件处理fopen系列函数

c语言中如何查看fopen创建的文件,typedef以及文件处理fopen系列函数path就是制定打开文件的路径,可以是相对路径,也可以是绝对路径,mode有以下值:fopen打开文件成功,返回有效file的有效地址,失败返回NULL。#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.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; }

c语言中如何查看fopen创建的文件,typedef以及文件处理fopen系列函数(1)

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

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; }

猜您喜欢: