blogernice

导航

2018年10月30日 #

字符串处理函数

摘要: 函数名: strcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include <stdio.h> #include <string.h> int main(void) { char string[1 阅读全文

posted @ 2018-10-30 17:56 blogernice 阅读(131) 评论(0) 推荐(0)

ASCII码表

摘要: ASCII码表 ASCII码大致可以分作三部分組成。 第一部分是:ASCII非打印控制字符; 第二部分是:ASCII打印字符; 第三部分是:扩展ASCII打印字符。 第一部分:ASCII非打印控制字符表 ASCII表上的数字0–31分配给了控制字符,用于控制像打印机等一些外围设备。例如,12代表换页 阅读全文

posted @ 2018-10-30 17:55 blogernice 阅读(151) 评论(0) 推荐(0)

GCC编译-Werror

摘要: 编译: 第一步、是进行预编译,使用-E参数可以让GCC在预处理结束后停止编译过程: gcc -E hello.c -o hello.i 预处理的宏定义插入到hello.i中 第二步、是将hello.i编译为目标代码,这可以通过使用-c参数来完成: gcc -c hello.i -o hello.o 阅读全文

posted @ 2018-10-30 17:52 blogernice 阅读(9259) 评论(0) 推荐(0)

函数返回值—返回局部变量

摘要: 看看下面的程序的输出: #include <stdio.h> char *returnStr() { char *p="hello world!"; return p; } int main() { char *str; str=returnStr(); printf("%s\n", str); r 阅读全文

posted @ 2018-10-30 17:51 blogernice 阅读(179) 评论(0) 推荐(0)

__DATE__,__FILE__,__LINE__,__TIME__,__FUNCTION__

摘要: C99 ( ISO/IEC 9899:1999 ) 网上有pdf文件。 C标准中指定了一些预定义的宏,对于编程经常会用到。下面这个表中就是一些常常用到的预定义宏。 __DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字) __FILE__ 代表当前源代码文件名的字符串文字 _ 阅读全文

posted @ 2018-10-30 17:50 blogernice 阅读(106) 评论(0) 推荐(0)

printf中#号的意思

摘要: #进行宏字符串连接,在宏中 把参数解释为字符串,不可以在语句中直接使用。 在宏定义中 printf("%s;/n", #S) 会被解释为 printf("%s;/n", "S") 例如下面的代码 code start #define TRACE(S) (printf("%s;/n", #S), S) 阅读全文

posted @ 2018-10-30 17:49 blogernice 阅读(2126) 评论(0) 推荐(0)

printf的实现原理

摘要: printf的声明 int _cdeclprintf(const char* format, …); _cdecl是C和C++程序的缺省调用方式_CDEDL调用约定: 1.参数从右到左依次入栈 2.调用者负责清理堆栈 3.参数的数量类型不会导致编译阶段的错误对于x86而言,栈向下生长,函数参数从右向 阅读全文

posted @ 2018-10-30 17:48 blogernice 阅读(394) 评论(0) 推荐(0)

内存溢出、内存泄露、内存越界、缓冲区溢出、栈溢出

摘要: 内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足 需求,于是产生溢出。 内存泄漏是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。一个盘子用尽各 阅读全文

posted @ 2018-10-30 17:47 blogernice 阅读(1094) 评论(0) 推荐(0)

C语言的弱符号与强符号

摘要: c语言的强符号和弱符号是c初学者经常容易犯错的地方。而且很多时候,特别是多人配合开发的程序,它引起的问题往往非常行为怪异而且难以定位。 什么是强符号和弱符号? 在c语言中,函数和初始化的全局变量是强符号,未初始化的全局变量时弱符号。强符号和弱符号的定义是连接器用来处理多重定义符号的,它的规则是: 不 阅读全文

posted @ 2018-10-30 17:47 blogernice 阅读(435) 评论(0) 推荐(0)

大小端存储问题

摘要: 所谓的大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 所谓的小端模式,是指数据的低位保存在内存的低地址中,而数 据的高位保存在内存的高地址中,这 阅读全文

posted @ 2018-10-30 17:46 blogernice 阅读(608) 评论(0) 推荐(0)

gcc编译选项

摘要: gcc提供了大量的警告选项,对代码中可能存在的问题提出警 告,通常可以使用-Wall来开启以下警告: -Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts -Wimplicit-int -Wimplicit 阅读全文

posted @ 2018-10-30 17:45 blogernice 阅读(251) 评论(0) 推荐(0)

文件读写

摘要: 从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。 ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。ASCII码文件可在屏幕上按字符显示。 二进制文件是按二进制的编码方式来存放文件的。二进制文件虽然也可在屏幕上显示,但其内容无法 阅读全文

posted @ 2018-10-30 17:43 blogernice 阅读(576) 评论(0) 推荐(0)

scanf 用法及陷阱(转)

摘要: 函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。 其调用格式为: 阅读全文

posted @ 2018-10-30 17:38 blogernice 阅读(316) 评论(0) 推荐(0)

va_start、va_end、va_list的使用

摘要: 1:当无法列出传递函数的所有实参的类型和数目时,可用省略号指定参数表void foo(...);void foo(parm_list,...); 2:函数参数的传递原理函数参数是以数据结构:栈的形式存取,从右至左入栈.eg:#include <iostream>void fun(int a, ... 阅读全文

posted @ 2018-10-30 17:37 blogernice 阅读(102) 评论(0) 推荐(0)

【转】getopt分析命令行参数

摘要: (一) 在Linux中,用命令行执行可执行文件时可能会涉及到给其加入不同的参数的问题,例如: ./a.out -a1234 -b432 -c -d 程序会根据读取的参数执行相应的操作,在C语言中,这个功能一般是靠getopt()这个函数,结合switch语句来完成的,首先来看下面的代码: #incl 阅读全文

posted @ 2018-10-30 17:31 blogernice 阅读(135) 评论(0) 推荐(0)

嵌入式Linux开发层次

摘要: 大量可用的引导装载程序(bootloader)、规模缩小的分发版(distribution)、文件系统和 GUI 看起来可能太多了,但是这些丰富的选项实际上是一种恩赐,允许您调整开发或用户环境以完全符合您的需要。 许多 Linux 改良品种迎合了嵌入式/实时市场。它们包括 RTLinux(实时 Li 阅读全文

posted @ 2018-10-30 16:48 blogernice 阅读(504) 评论(0) 推荐(0)

嵌入式linux开发流程

摘要: Minicom:Linux下的终端程序,用于通过串口进行通信,在嵌入式Linux系统中,可以用于主机与目标系统通信,实现串口控制台的功能。 DHCP: 动态主机配置协议。运行实现该协议的服务的主机,通过对客户发起的DHCP请求进行应答,可以动态的配置客户机的IP地址等网络信息。 TFTP: 一种FT 阅读全文

posted @ 2018-10-30 16:47 blogernice 阅读(2185) 评论(0) 推荐(0)

linux系统调用流程

摘要: 由于系统调用都是从调用中断开始的,所以我们还是从中断讲起. 关于中断: Intel386认识两种事件类:异常(exception)与中断(interrupt)。两者都会强制性创建一个进程或任务。中断能在任何不可预料的时间发生,来响应硬件的信号,是硬中断;而异常是由指令执行而产生的,是软中断。 386 阅读全文

posted @ 2018-10-30 16:46 blogernice 阅读(568) 评论(0) 推荐(0)

mutex详解

摘要: 理发师问题: 理发店理有一位理发师、一把理发椅和n把供等候理发的顾客坐的椅子 如果没有顾客,理发师便在理发椅上睡觉 一个顾客到来时,它必须叫醒理发师 如果理发师正在理发时又有顾客来到,则如果有空椅子可坐,就坐下来等待,否则就离开。 解法: 引入3个信号量和一个控制变量: 1)控制变量waiting用 阅读全文

posted @ 2018-10-30 16:46 blogernice 阅读(2898) 评论(0) 推荐(0)

select()函数分析

摘要: Part 1:Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发 阅读全文

posted @ 2018-10-30 16:45 blogernice 阅读(334) 评论(0) 推荐(0)