前言:
如今姐妹们对“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