c语言
a987860319
这个作者很懒,什么都没留下…
展开
-
一条语句实现库函数strlen
#include#includeint strlen(char* s){return((assert(s)),(*s ? (strlen(s+1)+1): 0));}int main(){printf("len = %d",strlen("12345"));return 0 ;}原创 2013-10-26 20:16:52 · 1092 阅读 · 0 评论 -
将一个十进制数转换为二进制输出
编程实现将一个十进制数转换为二进制输出原创 2014-01-20 20:12:01 · 4038 阅读 · 0 评论 -
求一个十进制数中含有的二进制一的个数
求一个十进制数中含有的二进制一的个数原创 2014-01-20 20:26:58 · 1544 阅读 · 0 评论 -
程序地址布局
原创 2013-12-07 18:59:35 · 638 阅读 · 0 评论 -
C语言中的调试宏
#ifdef DEBUG#define debug_printf(fmt, ...) printf(fmt, ##__VA_ARGS__)#else#define debug_printf(fmt, ...) #endif其中##在没有参数的时候去掉前面的","号,否则在没有参数的时候,编译会报错。#include #ifdef DEBUG#define debug_prin原创 2014-09-10 13:05:47 · 1401 阅读 · 0 评论 -
Linux下的C编程特点
Linux下代码括号“{”和“}”的使用原则如下(1)对于结构体、if/for/while/switch语句,“{”不另起一行,例如:struct var_data{ int len; char data[0];};if (a == b){ a = c; d = a;}for (i = 0; i < 10; i++){ a = c; d = a;}(2)如果i原创 2014-09-17 20:03:14 · 1294 阅读 · 1 评论 -
两个都是数字的字符串求和
#include #include #include void add(char *a, char *b){ char *ret,*array_a,*array_b; int lena,lenb,len_small,len_big,i,tmp = 0;/*tmp表示是否有进位*/ if(a == NULL || b == NULL) return; lena = strl原创 2015-03-24 16:55:54 · 3244 阅读 · 1 评论 -
将一个十六进制字符串转换为十进制数值的问题
在程序中,我们有时需要将一个十六进制字符串转换为十进制数字。比如:char *ptr="0x11";int n=0;//我们想让n等于0x11,即17通常我们在C中,想将一个字符串转换为一整形数字,通常会使用下面的方法:char *ptr="123"; int n=0; n=atoi(ptr); printf("%d/n",n)转载 2015-04-16 09:18:29 · 1624 阅读 · 0 评论 -
使用srandom和random产生伪随机序列
函数原型#include <stdlib.h>long int random(void);void srandom(unsigned int seed);srandom 该函数传递下来的参数作为种子,用于random返回随机数。如果种子不变,那么每次random产生的随机序列也是一样的。如果不给srandom传递参数,则种子默认为1。random 使用种子产生随机序列,随机数的范围是0原创 2015-04-16 14:14:01 · 2091 阅读 · 0 评论 -
linux中qsort的使用
函数原型#include void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *));参数说明:base:排序数组的起始地址nmemb:要排序的元素的个数size:单个元素的大小compar:用户自定义的比较两个元素大小的方法。int(*co原创 2015-04-16 11:28:10 · 3265 阅读 · 0 评论 -
确定主机字节序
#include <stdio.h>intmain(int argc, char **argv){ union { short s; char c[sizeof(short)]; } un; un.s = 0x0102; if (sizeof(short) == 2) { if (un.c[0] == 1 && un.c原创 2015-05-22 23:09:12 · 853 阅读 · 0 评论 -
libcurl上传文件到服务器的几种方式
提交表单方式/*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | *原创 2016-04-01 20:25:24 · 13915 阅读 · 12 评论 -
制作一个Linux下炫酷吊炸天的log输出工具
先看一下最后的效果 先说一下上面打印的内容: 1. 最前面的是log输出的级别,现在有NOTICE、INFO、DEBUG、WARN、ERR 5个log输出等级。 2. 紧接着的是该条log输出的时间,前面的时间是秒,后面的时间是微妙。 3. 然后是这条打印语句所在的文件,函数和行号 4. 然后是具体打印的内容如何实现首先看一下其中的一个接口函数dsdl_err,这是一个可变参数的宏。可原创 2016-08-05 17:43:31 · 1879 阅读 · 0 评论 -
常见查找,排序算法
查找,排序,算法原创 2014-02-15 16:22:33 · 1347 阅读 · 0 评论 -
辗转相除法求两个数的最大公约数
下面来自百度:辗转相除法古希腊数学家欧几里德辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。一般地,如果求自然数a和b的最大公约数(a>b),那么当时,得,这里表示b整除a,而表示b不能整除a。当时,设余数为,根据整除的性质,有转载 2014-02-07 15:27:50 · 3982 阅读 · 1 评论 -
不用系统函数,实现输入一个整形数,输出其转换后的字符串,如输入整形1234,则转换后输出字符串“1234”,-1234转换为“-1234”。
不用系统函数,实现输入一个整形数,输出其转换后的字符串,如输入整形1234,则转换后输出字符串“1234”,-1234转换为“-1234”。原创 2014-01-20 20:38:59 · 3333 阅读 · 0 评论 -
甲骨文面试题
下面的代码所分配的堆空间一样多吗?为什么?void f1(){ int* p = new int[100];}void f2(){ int* p[100]; for(int i=0; i p[i] = new int;} 注意:这个题目其实隐含的考察了栈空间和堆空间的概念,如果你的答案是不一样多,但原创 2013-11-21 22:37:07 · 2333 阅读 · 0 评论 -
Motorola笔试题
下面的程序有没有问题,如果有问题,问题在哪里呢?struct S{ int i; int* p;};int main(){ struct S s; int* p = &s.i; p[0] = 4; p[1] = 3; s.p = p; s.p[1] = 1; s.p[2]转载 2013-11-23 09:54:31 · 948 阅读 · 0 评论 -
常见字符串操作函数
#include#includeint strlen(char* s){return((assert(s)),(*s ? (strlen(s+1)+1): 0));}int main(){printf("len = %d",strlen("12345"));return 0 ;}/**********************************/#include#in原创 2014-01-13 19:55:02 · 927 阅读 · 0 评论 -
Getmemory考题分析
void GetMemory(char *p){ p=(char *)malloc(100);}void Test(){ char * str=NULL; GetMemory(str); strcpy(str,"Hello world"); printf(str);} 实质:GetMemory(str)在调用时会生成一个_str与str指向同一个数,这原创 2014-01-13 20:02:28 · 783 阅读 · 0 评论 -
补码,源码,反码
看完这些定义以后,我的脑袋瞬间膨胀到原来的二倍!这样变态的公式不管你记不记得住,反正我是记不住!还好以前对它们有所了解,否则看到这一堆公式恐怕我早就放弃参加软考的念头喽。其实没必要弄得这么麻烦,它们完全可以用一两句话就描述的很清楚。原码:如果机器字长为n,那么一个数的原码就是用一个n位的二进制数,其中最高位为符号位:正数为0,负数为1。剩原创 2014-01-15 18:33:58 · 955 阅读 · 0 评论 -
数据类型转换
四:数据类型转换前面讲到过双目运算符要求两边数据类型要一样,其次是赋值表达式两边的数据类型也要一样但是,如果不一样怎么办?比如:当我们计算: 2 + 3.2怎么处理?1)自动类型转换 大概意思:就是计算机自动帮你转换,不需要你去转换。如: 2 + 3.2 2 + 2U 5+2L 3.5 + 5L 自动类型转换必须满足: 水平方向是原创 2014-01-15 12:36:51 · 901 阅读 · 0 评论 -
gets和scanf的区别
intscanf(constchar*format, ... );scanf("%c%c%c",&a,&b,&c);输入为:1d e f则把'd'赋予a, ' (空格)'赋予b,'e'赋予c。因为%c 只要求读入原创 2014-01-15 19:35:14 · 921 阅读 · 0 评论 -
嵌入式开发C语言面试题总结
嵌入式开发C语言面试题总结原创 2014-01-23 16:44:24 · 2164 阅读 · 0 评论 -
有n个数,使前面各数顺序向后移动m个位置,最后m个数变成最前面m个数。
有n个数,使前面各数顺序向后移动m个位置,最后m个数变成最前面m个数。原创 2014-01-20 20:35:41 · 2736 阅读 · 0 评论 -
Linux C使结构体字节对齐的两种方法
未对齐时的结构体大小#include <stdio.h>#include <stdint.h>struct aa { uint8_t a; uint16_t b; uint8_t c;};int main(int argc, char **argv){ printf("struct size=%d\n", sizeof(st...原创 2018-04-04 10:39:31 · 6862 阅读 · 0 评论