C语言
C语言相关博客
爱心天使的守护
今天也是充满希望的一天
展开
-
C语言其他输入输出函数fflush ftell fseek setbuf setvbuf rewind fgetpos fsetpos feof ferror clearerr tmpfile等介绍
1、fflushint fflush ( FILE * stream );函数功能:刷新缓冲区。#include<stdio.h>int main(){char passwd[20] = {0};int ch = 0;printf(“请输入密码:>”);scanf("%s", passwd);printf(“请确认密码(Y/N):>”);//fflus...原创 2019-02-12 13:50:23 · 321 阅读 · 0 评论 -
C语言中%d,%o,%f,%e,%x的意义
式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。不同类型的数据用不同的格式字符。格式字符有d,o,x,u,c,s,f,e,g等。如%d整型输出,%ld长整型输出,%o以八进制数形式输出整数,%x以十六进制数形式输出整数,%u以十进制数输出unsigned型数据(无符号数)。%c用来输出一个字符,%s用来输出一个...原创 2019-03-13 20:39:50 · 419 阅读 · 0 评论 -
C语言:error C2084 函数“”已有主体
C语言:error C2084 函数“”已有主体问题一:结构体重定义我在头文件里定义了这样一个结构体struct addressBook{ struct contact contacts[MAX]; int sz;}list;12345然后我在实现部分定义了这样一个函数void empty_contact(struct addressBook* list)1在...原创 2018-09-26 12:48:36 · 27454 阅读 · 3 评论 -
sprintf,sscanf,fread,fwrite
sprintf函数先来看一下msdn中对这个函数的定义; Write formatted data to a string.(写格式化到一个字符串) int sprintf( char *buffer, const char *format [, argument] … ) 它的参数有一个字符串和可变参数 代码演示如下#include&lt;stdio.h&gt;struct...原创 2018-08-18 13:14:47 · 131 阅读 · 0 评论 -
通讯录——C语言小项目
通讯录项目要求: 1,实现一个通讯录,可以存储一个人的名字,性别,年龄,电话,地址。 2,可以实现对现有通讯录已有联系人的增删查改。 3,可以定义已有联系人按照年龄排序,可以实现联系人的清空。 4,可以动态开辟内存,储存来联系人的信息。 5,可以实现联系人信息的动态加载。contact.h#ifndef _CONTACT_H_#define _CONTACT_H_...原创 2018-08-18 12:02:10 · 519 阅读 · 0 评论 -
结构体,位段,枚举,联合
结构体结构体类型的创建结构体的格式: struct 结构名 {成员列表} 变量名; 结构体创建时分为有名结构体和无名结构体。 有名结构体struct str{ char name[20]; int id; int age;};struct stu peopleinfo无名结构体struct{ char name[20]...原创 2018-08-16 11:39:02 · 149 阅读 · 0 评论 -
C语言注释转换
代码思路 分为四种状态,正常代码,C语言注释,c++注释,文件结束测试文件如下,共有7中情况// 1.一般情况int num = 0;/* int i = 0; */// 2.换行问题/* int i = 0; */int j = 0;/* int i = 0; */int j = 0;// 3.匹配问题/*int i = 0;/*xxxxx*/// 4.多行...原创 2019-05-11 23:33:04 · 256 阅读 · 0 评论 -
指针数组,数组指针,函数指针,函数指针数组,函数指针数组的指针
1,指针数组指针数组,其本质还是数组,只不过它里面放的是指针。//epchar* p[3] = {"aaa","bbb","ccc"};//首先,p是一个指针,指向有三个元素的数组,而每个元素又分别是一个指针,指向一个字符串。2,数组指针数组指针,其本质是一个指针,只不过它有能力指向一个数组。//epchar (*p)[3] = {'a','b','c'};首先...原创 2018-07-31 12:01:56 · 135 阅读 · 0 评论 -
翻转整形二进制序列的三种方法
1,数学方法。(缺点每次调用函数,开销大)#include<math.h>unsigned int reverse_bit(unsigned int num){ int i = 0; unsigned int ret = 0; for (i = 0; i < 32; i++) { ret += ((num >>...原创 2018-07-30 11:26:32 · 266 阅读 · 0 评论 -
递归翻转一个字符串
编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中 的字符串操作函数。#include&lt;stdio.h&gt;#include&lt;assert.h&gt;int my_strlen(char arr[]){ assert(arr); int count...原创 2018-07-29 18:38:45 · 366 阅读 · 0 评论 -
模拟实现C语言库函数memmove
memmove (功能)Moves one buffer to another.(函数参数)void *memmove( void *dest, const void *src, size_t count );(返回值)memmove returns the value of dest.#include<windows.h>#include<assert.h&...原创 2018-07-27 00:31:44 · 182 阅读 · 0 评论 -
简单模拟实现C语言库函数printf
在C语言中经常用到printf,但却很少思考它是怎末实现的,今天我们就来模拟实现一下。 首先,我们来看一下MSDN中对它的定义。 printf, Print formatted output to the standard output stream. (格式化打印标准输出流) (函数参数)int printf( const char *format [, argument...原创 2018-07-26 23:48:57 · 543 阅读 · 0 评论 -
模拟实现C语言库函数memcpy
首先,我们来看一下MSDN中对它的定义,函数类型,返回值。 memcpy (定义)Copies characters between buffers.(函数参数)void *memcpy( void *dest, const void *src, size_t count );(返回值)memcpy returns the value of dest.接下来看一下代码实现#...原创 2018-07-26 11:14:13 · 132 阅读 · 0 评论 -
模拟实现C语言库函数strcmp
首先看一下MSDN中对它的定义,函数参数,返回值 strcmp (定义)Compare strings.(函数参数)int strcmp( const char *string1, const char *string2 );(返回值)The return value for each of these functions indicates the lexicographic rel...原创 2018-07-26 11:08:11 · 492 阅读 · 0 评论 -
模拟实现C语言库函数strcat
首先,我们看一下MSDN中对它的定义,函数参数,返回值 strcat (定义)Append a string.(函数参数)char *strcat( char *strDestination, const char *strSource );(返回值)Each of these functions returns the destination string (strDestinati...原创 2018-07-26 10:56:43 · 324 阅读 · 1 评论 -
模拟实现C语言库函数strcpy
首先,我们来看一下MSDN中对strcpy的定义,函数参数,返回值 strcpy (定义)Copy a string.(函数的返回类型及参数)char *strcpy( char *strDestination, const char *strSource );(返回值)Each of these functions returns the destination string. No...原创 2018-07-26 10:51:32 · 201 阅读 · 0 评论 -
三种方法模拟实现C语言库函数strlen
//三种方法模拟实现C语言库函数strlen//1,计数器法#include<stdio.h>#include<assert.h>#include<windows.h>int my_strlen(const char* str){ assert(str != NULL); int count = 0; while (*str ...原创 2018-07-24 19:48:52 · 243 阅读 · 0 评论 -
C语言可变参数列表源码级深度解析
在C语言中,我们可以通过函数实现可变参数的形式,来使函数接受多个参数,接下我就深度刨析一下C语言中的可变参数的源码及其是如何实现的。 当让在这之前我们先要进行一下知识铺垫了,先要了解一下函数栈帧的部分知识,当然,有想要详细了解的朋友可以看我之前的一篇博客,地址在此奉上。https://blog.csdn.net/aixintianshideshouhu/article/details...原创 2018-07-23 23:12:40 · 282 阅读 · 0 评论 -
扫雷小游戏(C语言)
C语言学完了,就尝试过写个扫雷的小游戏,接下来展示一下。 整个代码分为三个部分game.h#define _CRT_SECURE_NO_WARNINGS 1#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#include&lt;time.h&gt;#include&lt;string.h&gt;#define r原创 2018-07-22 21:10:05 · 222 阅读 · 0 评论 -
函数的调用过程(栈帧)
今天学完了,函数的调用过程,来和大家分享一下自己的成果,欲戴王冠,比承其重。 首先来看一下演示的代码,整个过程实在vs2008实现的 。 在演示之前我们如果打开调用堆栈的话,会发先main函数也被其他函数调用了,其实它被_mmainCRTStartup调用,_mmainCRTStartup又被mainCRTStartup调用。 我们知道,每次函数调用都是一个过程,而每次调用都要为函数开辟...原创 2018-07-22 19:22:03 · 168 阅读 · 0 评论 -
程序环境与预处理
程序环境与预处理一、程序环境C语言的程序环境主要分为翻译环境和执行环境。其中翻译环境是将源代码转换为可执行的机器指令。 2.翻译环境又分为编译和链接两个部分。 1.1编译又分为三个小部分 *预编译(预处理):a.包含头文件b.注释删除。c.#define定义的常量的替换。d.#define定义的宏的替换。 在gcc(linuxs环境下的C语言编译器)使...原创 2018-07-20 22:33:16 · 170 阅读 · 0 评论 -
C语言实现三子棋小游戏
三子棋(C语言)用了这好几天的时间在闲暇时间写了一个小时候玩的井字棋,或者叫三子棋的小游戏,来娱乐娱乐,虽然是黑白框,并且电脑有点傻之外,一切良好。首先写之前就要先明白思路,这个棋盘要放到一个二维数组里面这样才能更好的显示出来,并且方便操作,先打印出来棋盘这是必须的,这就是基本的二维数组的打印就好,把棋盘初始化为空格就好了,然后等到走的时候,拿相应的字符来代替就好了;电脑走的话就用随机数来...原创 2018-07-18 23:10:10 · 185 阅读 · 0 评论 -
谁是凶手
2. 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯 的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。 现在请根据这些信息,写一个程序来确定到底谁是凶手。#include <stdio.h> int main() { char kille...原创 2018-07-18 22:50:22 · 228 阅读 · 1 评论 -
打印杨辉三角
#include <stdio.h>#include <windows.h>int main(){ int i = 0; int j = 0; int arr[10][10] = { 0 }; for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) ...原创 2018-06-21 19:16:49 · 97 阅读 · 0 评论 -
比赛名次
1. 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一; 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。#include <stdio.h> #include<...原创 2018-06-21 19:11:43 · 660 阅读 · 0 评论 -
C语言数组总结
在C语言中我们经常用到数组,这其中有很多我们需要了解并且注意的地方。以下是我学习数组之后的一个简单总结。这里我们详细说明一维数组和二维数组的相关知识。一维数组一维数组的创建数组是一组相同类型元素的集合。数组的创建方式:type_t arr_name [const_n];(type_t 是指数组的元素类型 const_n 是一个常量表达式,用来指定数组的大小)例如:int arr[100];或者...原创 2018-06-21 19:06:19 · 4383 阅读 · 3 评论 -
c语言操作符总结
一、操作符的分类算术操作符、移位操作符、位操作符、赋值操作符、单目操作符。一、算术操作符运算符含义举例结果+加法运算符a+ba与b的和-减法运算符a-ba与b的差*乘法运算符a*ba与b的积/除法运算符a/ba除b的商%求余运算符a%ba除b的余数注:1、除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。2、对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除...原创 2018-06-07 14:48:23 · 137 阅读 · 0 评论