机缘
要说到成为创作者的初衷和机缘的话
坦白的说,我的初衷并不纯洁,并不是想着单纯的分享经验,交流技术,有部分原因是这玩意看着很炫酷,觉得如果能在某个互联网平台上有很多粉丝,然后还有相关的技术,我觉得这种实在是太酷辣,感觉这是个很拿得出手,很有面子的事情。
但是随着平常敲代码,学习的过程中,慢慢地就感觉到了那种分享技术和经验然后被别人认可的认同感,就像打游戏打BOSS一样,玩家通过不断的打怪升级,慢慢的提升自己的装备,提升自己的技术和熟练度,最后打败BOSS,这当然是一件非常有成就感的事情,对应到成为创作者的身份,在创作博客的过程中学习,慢慢的提升自己,这就和打BOSS一样,慢慢的就觉得这样的提升自己的过程非常的充实,也能明确的感受到自己自己技术的提升的快乐,于是在这个过程中,就慢慢确定了自己明确的要成为一个创作者
今后的创作分享也不会停止,大多是以一下方面为主
- 实战项目中的经验分享
- 日常学习过程中的记录
- 通过文章进行技术交流
- …
收获
说起在文章创作的过程中的收获的话,其实最多的还是技术上的收获,从一个懵懂无知的小白变为了稍微知道一点的小白,对计算机这个行业领域的了解也是多了不少,也收获了很多学习方法,同样的也认识了许多志同道合的大佬们,从他们那里也学到了不少,总之,这些收获是无法用数量和物质来言语的,这大多是对个人全方位的提升
要说数据上收获了多少的话,目前大概是下图这样
日常
慢慢的,写的博客越来越多,分享的代码越来越多,创作的次数越来越频繁,我渐渐意识到,创作已经成为了生活了一部分了,现在大多都是有课上课,没课的话想一想有没有什么创作的点子和灵感,有的话就可以构思怎么去创作怎么去写,如果没有的话可能才会去考虑玩会儿游戏什么的,总的来说就是在有限的精力下,在学校学习之余进行创作
成就
说到写的最好的代码,我好像还没什么能拿得出手的代码,那这里就放俩个能完整运行的程序吧,一个三子棋,一个通讯录管理系统
三子棋
头文件
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<time.h> #define ROW 3 //定义 行为3 #define COL 3 //定义 列为3 //打印屏幕菜单 void screen(); //初始化 void initialize(char board[ROW][COL], int row, int col); //打印棋盘 void displayboard(char board[ROW][COL],int row,int col); //玩家下棋 void palyer_move(char board[ROW][COL], int row, int col); //电脑下棋 void computer_move(char board[ROW][COL], int row, int col); //判断输赢 char IsWin(char board[ROW][COL], int row, int col);
函数实现
#define _CRT_SECURE_NO_WARNINGS 1 #include"game.h" void screen() { printf("--------------------------\n"); printf("---------1.Play ----------\n"); printf("--------------------------\n"); printf("---------2.Esc ----------\n"); printf("--------------------------\n"); } void initialize(char board[ROW][COL], int row, int col) { for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { board[i][j] = ' '; } } } void displayboard(char board[ROW][COL], int row, int col) { for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { printf(" %c ", board[i][j]); //打印分割列 if (j < col - 1) printf("|"); } //打印分割行 if (i < row - 1) printf("\n---|---|---\n"); } printf("\n"); } void palyer_move(char board[ROW][COL], int row, int col) { int x = 0; int y = 0; printf("\n----玩家下棋----\n"); while (1) { printf("请输入落子的坐标:"); scanf("%d %d", &x, &y); if (x <= 0 || x > 3 || y <= 0 || y > 3) { printf("非法输入,请重新输入\n"); } else if (board[x-1][y-1] == ' ') { board[x-1][y-1] = '*'; break; } else printf("输入位置被占用,请重新输入\n"); } } void computer_move(char board[ROW][COL], int row, int col) { int x = 0; int y = 0; printf("\n----电脑下棋----\n"); while (1) { int x = rand() % ROW;//使得随机数大小为1--3 int y = rand() % COL;//使得随机数大小为1--3 if (board[x][y] == ' ') { board[x][y] = '#'; break; } } } static int IsFull(char board[ROW][COL], int row, int col) { int i = 0; int j = 0; for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { if (board[i][j] == ' ') return 0; } } return 1; } //玩家赢 - '*' //电脑赢 - '#' //平局 --- 'Q' //游戏继续-'C' char IsWin(char board[ROW][COL], int row, int col) { int i = 0; for (i = 0; i < row; i++) { if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0] != ' ') { return board[i][0]; } } for (i = 0; i < col; i++) { if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] != ' ') { return board[0][i]; } } if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ') { return board[1][1]; } if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ') { return board[1][1]; } //判断平局 if (IsFull(board, row, col)) { return 'Q'; } return 'C'; }
主函数
#define _CRT_SECURE_NO_WARNINGS 1 #include"game.h" void game() { //打印棋盘 void screen(); char ret = 0; char board[ROW][COL] = { 0 }; initialize(board, ROW, COL);//初始化棋盘 displayboard(board, ROW, COL);//打印棋盘 while (1) { palyer_move(board, ROW, COL);//玩家下棋 displayboard(board, ROW, COL);//打印棋盘 //判断输赢 ret = IsWin(board, ROW, COL); if (ret != 'C') { break; } computer_move(board, ROW, COL);//电脑下棋 displayboard(board, ROW, COL);//打印棋盘 //判断输赢 ret = IsWin(board, ROW, COL); if (ret != 'C') { break; } } if (ret == '*') { printf("玩家赢\n"); } else if (ret == '#') { printf("电脑赢\n"); } else { printf("平局\n"); } } int main() { srand((unsigned int)time(NULL)); int input = 0; printf("请进行输入确认是否开始游戏\n"); do { screen(); scanf("%d", &input); switch (input) { case 1: printf("开始游戏\n"); printf("三子棋\n"); game(); break; case 2: printf("退出游戏\n"); break; default: printf("非法输入,请重新输入\n"); break; } } while (input != 2); return 0; }
通讯录管理系统
头文件
#pragma once #include<stdio.h> #include<assert.h> #include<string.h> #include<stdlib.h> #define Name_Max 20 #define Tel_Number 12 #define Sex_Max 5 #define Address_Max 30 #define Contact_Max 100 #define Contact_SZ 3 //联系人结构体 typedef struct PeopleInformation { char name[Name_Max]; char telnumber[Tel_Number]; int age; char sex[Sex_Max]; char address[Address_Max]; }PeoInfor; //通讯录结构体 typedef struct Contact { PeoInfor* data;//结构体数组存放联系人结构体 int size;//记录当前通讯录中有多少个联系人 int capacity;//记录当前存放的容量 }Contact; //目录 void menu(); //初始化通讯录 void InitContact(Contact* cp); //增加联系人 void AddContact(Contact* cp); //删除联系人 void DelContact(Contact* cp); //通过姓名进行查找联系人 int FindPeople(Contact* cp, char name[]); //展示全部通讯录信息 void ShowContact(const Contact* cp); //查询联系人 void SeachPeople(Contact* cp); //修改联系人信息 void ModifyContact(Contact* cp); //jia扩容 void CheckContact(Contact* cp); //销毁通讯录 void DestoryContact(Contact* cp); //生成文件,保存通讯录中的数据 void SaveContact(Contact* cp); //读取文件信息到通讯录 void LoadContact(Contact* cp);
函数实现
#define _CRT_SECURE_NO_WARNINGS 1 #include "Contact.h" void menu() { printf("\n"); printf("-----------------------------\n"); printf("--- 1.添加联系人 -----\n"); printf("--- 2.删除联系人 -----\n"); printf("--- 3.查找联系人 -----\n"); printf("--- 4.修改联系人信息 -----\n"); printf("--- 5.显示全部信息 -----\n"); printf("--- 0.退出通讯录 -----\n"); printf("-----------------------------\n"); } //读取文件信息到通讯录 void LoadContact(Contact* cp) { //打开文件 FILE* pf = fopen("contact.txt", "rb"); if (pf == NULL) { perror("LoadContact"); return; } //读取文件 PeoInfor temp = { 0 }; while (fread(&temp, sizeof(PeoInfor), 1, pf)) { CheckContact(cp); cp->data[cp->size] = temp; cp->size++; } } //初始化通讯录 void InitContact(Contact* cp) { //判断非空 assert(cp); //初步初始化 cp->size = 0; cp->capacity = Contact_SZ; cp->data = (PeoInfor*)calloc(cp->capacity, sizeof(PeoInfor)); if (cp->data == NULL) { perror("InitContact->calloc"); return; } //读取文件信息到通讯录 LoadContact(cp); } //检查扩容 void CheckContact(Contact* cp) { if (cp->size == cp->capacity) { PeoInfor* ptr = (PeoInfor*)realloc(cp->data, (cp->capacity + 2) * sizeof(PeoInfor)); if (ptr != NULL) { cp->data = ptr; cp->capacity += 2; printf("增容成功\n"); } else { perror("AddContact->realloc"); return; } } } //增加联系人 void AddContact(Contact* cp) { //判断非空 assert(cp); //判断满后扩容 CheckContact(cp); printf("请输入要添加的联系人的姓名:\n"); scanf("%s", cp->data[cp->size].name); printf("请输入要添加的联系人的电话号:\n"); scanf("%s", cp->data[cp->size].telnumber); printf("请输入要添加的联系人的年龄:\n"); scanf("%d", &(cp->data[cp->size].age)); printf("请输入要添加的联系人的性别:\n"); scanf("%s", cp->data[cp->size].sex); printf("请输入要添加的联系人的住址:\n"); scanf("%s", cp->data[cp->size].address); cp->size++; printf("添加成功\n"); } //通过姓名进行查找联系人 int FindPeople(Contact* cp, char name[]) { assert(cp); for (int i = 0; i < cp->size; i++) { if (strcmp(cp->data[i].name, name) == 0) { return i; } } return -1; } //删除联系人 void DelContact(Contact* cp) { assert(cp); char name[Name_Max]; if (cp->size == 0) { printf("通讯录为空,无需删除\n"); return; } printf("请输入选择删除的联系人的姓名:\n"); scanf("%s", name); int ret = FindPeople(cp, name); if (ret == -1) { printf("要删除的联系人不存在\n"); return; } for (int i = ret; i < cp->size - 1; i++) { cp->data[i] = cp->data[i + 1]; } cp->size--; printf("删除成功\n"); } //查询联系人 void SeachPeople(Contact* cp) { assert(cp); char name[Name_Max]; if (cp->size == 0) { printf("通讯录为空\n"); return; } printf("请输入选择查找的联系人的姓名:\n"); scanf("%s", name); int ret = FindPeople(cp, name); if (ret == -1) { printf("要查找的联系人不存在\n"); return; } //名字 年龄 性别 电话 地址 //xxx xxx xxx xxx xxx printf("%-10s%-5s%-5s%-12s%-30s\n", "名字", "年龄", "性别", "电话", "地址"); //打印个人的信息 printf("%-10s%-5d%-5s%-12s%-30s\n", cp->data[ret].name, cp->data[ret].age, cp->data[ret].sex, cp->data[ret].telnumber, cp->data[ret].address); } //展示全部通讯录信息 void ShowContact(const Contact* cp) { assert(cp); if (cp->size == 0) { printf("通讯录为空\n"); return; } //名字 年龄 性别 电话 地址 //xxx xxx xxx xxx xxx printf("%-10s%-5s%-5s%-12s%-30s\n", "名字", "年龄", "性别", "电话", "地址"); for (int i = 0; i < cp->size; i++) { //打印每个人的信息 printf("%-10s%-5d%-5s%-12s%-30s\n", cp->data[i].name, cp->data[i].age, cp->data[i].sex, cp->data[i].telnumber, cp->data[i].address); } } //修改联系人信息 void ModifyContact(Contact* cp) { assert(cp); char name[Name_Max]; if (cp->size == 0) { printf("通讯录为空\n"); return; } printf("请输入选择修改的联系人的姓名:\n"); scanf("%s", name); int ret = FindPeople(cp, name); if (ret == -1) { printf("要修改的联系人信息不存在\n"); return; } printf("请输入要修改的联系人的姓名:\n"); scanf("%s", cp->data[ret].name); printf("请输入要修改的联系人的电话号:\n"); scanf("%s", cp->data[ret].telnumber); printf("请输入要修改的联系人的年龄:\n"); scanf("%d", &(cp->data[ret].age)); printf("请输入要修改的联系人的性别:\n"); scanf("%s", cp->data[ret].sex); printf("请输入要修改的联系人的住址:\n"); scanf("%s", cp->data[ret].address); printf("修改成功\n"); } //销毁通讯录 void DestoryContact(Contact* cp) { free(cp->data); cp->data = NULL; cp->size = 0; cp->capacity = 0; } //生成文件,保存通讯录中的数据 void SaveContact(Contact* cp) { //打开文件 FILE* pf = fopen("contact.txt", "wb"); if (pf == NULL) { perror("SaveContact"); return; } //写文件 for (int i = 0; i < cp->size; i++) { fwrite(cp->data + i, sizeof(PeoInfor), 1, pf); } //关闭文件 fclose(pf); pf = NULL; }
主函数
#define _CRT_SECURE_NO_WARNINGS 1 #include "Contact.h" //枚举,增加程序的可读性 enum options { EXIT, ADD, DEL, SEACH, MODIFY, SHOW }; int main() { int input = 0; //创建通讯录 Contact con; //初始化通讯录 InitContact(&con); do { menu(); printf("请输入你的选择: "); scanf("%d", &input); switch (input) { //增加联系人信息 case ADD: AddContact(&con); break; //删除联系人信息 case DEL: DelContact(&con); break; //查找某个联系人的信息 case SEACH: SeachPeople(&con); break; //修改某个联系人的信息 case MODIFY: ModifyContact(&con); break; //展示通讯录内的每一个联系人的信息 case SHOW: ShowContact(&con); break; //退出通讯录管理系统 case EXIT: SaveContact(&con); DestoryContact(&con); printf("通讯录已退出\n"); break; //预防非法输入 default: printf("输入错误,请重新输入\n"); break; } } while (input); return 0; }
憧憬
创作规划的话,希望今年之内能够拿下博客之心,然后3个月之内能够再发布30篇文章
职业生涯规划当然是希望能进大厂,然后拿到一份体面的工作和工资,希望自己的收获能对得起自己的付出,希望自己无限进步