Linux C 程序 (12)

字符串函数
C语言的字符串处理函数
1.puts函数

1 //把一个以‘\0‘结尾的字符串输出到屏幕
2 char a[] = "Welcome to";
3 char *p = "Linux C Program";
4 puts(a);
5 puts(p);

2.gets函数

1 //从终端输入一个字符数组,返回字符数组的首地址
2 char string[20];
3 gets(string);
4 puts(string);
5 //warning: the `gets‘ function is dangerous and should not be used.
6 //系统不推荐使用gets方法了,危险

3.strcpy和strncpy

1 #include<string.h>
2 char *strcpy(char *dest , char *src);
3 char *strncpy(char *dest , char *src ,int n);//复制前n个字符
4 //strcpy是string copy缩写,使用这两个函数必须包含string.h,返回值都是dest
5 //复制时连同‘\0‘一起被复制

复制错误代码示范:

1 char a[] = "Linux C Program " , b[20];
2 b = a ;
3 //字符串复制只能使用strcpy等类似功能的函数

strcpy不安全,容易被黑客利用,一般用strncpy
示例代码:

1 char *s = "hello worlg";
2 char d1[20],d2[20];
3 strcpy(d1,s);
4 strncpy(d2,s,sizeof(s));
5 //
6 //strncpy复制不完全。。。

4.strcat 和strncat

1 #include<string.h>
2 char *strcat(char *dest , char *src);
3 char *strncat(char *dest , char *src ,int n);//复制前n个字符
4 //把输入的src追加到dest的尾部
5 //strcat不安全

5.strcmp    和 strncmp

1 #include<string.h>
2 char *strcmp(char *s1 , char *s2);//比较两个字符串
3 char *strncmp(char *s1 , char *s2 ,int n);//比较前n字符串
4 //第一次出现不同字符时,s1-s2的差值为返回值

6.strlen

1 #include<string.h> 2 //返回字符串的实际长度,不会包括结束符‘\0‘,sizeof(s)的计算会包含结束符

7.strlwr 和 strupr//string lower 和string upper的缩写

8.strstr 和 strchr

 1 #include<string.h>
 2 char *strstr(char *s1 , char *s2);//s1中寻找s2,返回首次出现指向s2位置的指针,没有找到返回NULL
 3 char *strchr(char *s1 , char c);//s1寻找c首次出现的位置,返回指针,没有返回NULL
 4 //----
 5 #include<stdio.h>
 6 #include<string.h>
 7
 8 int main(){
 9         char *s1 = "Liunx C Program",*s2="unx",*p;
10
11         p = strstr(s1,s2);
12         if(p != NULL){
13                 printf("%s\n",p);
14         }else{
15                 printf("not found !");
16         }
17
18         p= strchr(s1,‘C‘);
19         if(p != NULL){
20                 printf("%s\n",p);
21         }else{
22                 printf("not found!");
23         }
24         return 0;
25 }
时间: 2024-08-26 11:43:07

Linux C 程序 (12)的相关文章

linux 统计 程序 运行时间

测试 代码运行时间 linux 中的 <sys/time.h> 中 有个函数可以获取当前时间,精确到 微秒 ---->  gettimeofday() 1 #include <sys/time.h>       // int gettimeofday(struct timeval *tv, struct timezone *tz); 2 /********************************************* 3 * struct timeval 4 *

VELT-0.1.5开发:在vs2013下调试Linux GUI程序

VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件,将可以在visual studio的IDE中进行Linux应用程序的开发(包括编译和调试),也可以进行uboot和linux内核的编译,并根据编译时的错误信息正确定位到源码.目前的版本是0.1.4,仅支持vs2013.此插件可以在CSDN下载频道下载(http://download.csdn.net/detail/lights

嵌入式linux应用程序调试方法

嵌入式linux应用程序调试方法 四 内存工具 17 4.1 MEMWATCH 17 4.2 YAMD 22 4.3 Electric Fence 24 五 C/C++代码覆盖.性能profiling工具 24 5.1 用gcov来测试代码覆盖率 25 5.2 使用gprof来优化你的C/C++程序 35 四 内存工具 您肯定不想陷入类似在几千次调用之后发生分配溢出这样的情形. 许多小组花了许许多多时间来跟踪稀奇古怪的内存错误问题.应用程序在有的开发工作站上能运行,但在新的产品工作站上,这个应用

5. Linux应用程序地址布局

程序构成: 在学习Linux应用程序开发时,经常会遇到如下概念:代码段.数据段.BSS段(Block Started by Symbol,又名:未初始化数据段) .堆(heap)和栈(stack).而这些部分也是构成Linux应用程序的重要组成部分. 内存布局: 当Linux应用程序在内存中运行的时候,以上组成部分在内存中布局: 从低地址到高地址分别为:代码段.数据段.BSS段.堆.栈. 堆向高内存地址生长. 栈向低内存地址生长. 下面测试下面的程序: 查看系统的线程: 下面我们看这代码的地址分

SUSE Linux Enterprise Serve 12 试用体验

大家都知道德国出产的奔驰.宝马.等车型以精美.可靠.耐用而著称,而同样出自德国人之手的Suse Linux ,即使是被收购也是一款出色的Linux发行版,目前Suse成为唯一一家为IBM大型主机提供具有企业就绪和商业支持特性的Linux操作系统的公司, 特别针对IBM System z 架构进行了优化,使其安装过程非常简便.而且在Suse平台上面部署SAP和Oracle应用非常方便.在今年10月28日,Suse Enterprise Server 12(简称SLES 12)在11版发布4年后,经

谈谈Linux应用程序 ABI兼容性

谈谈Linux应用程序ABI兼容性 背景 最近工作中遇到个问题,就是多个系统跑着不同版本的内核,不同架构的ARM芯片,上层的业务程序能否二进制归一(共镜像). 根据自己对Linux的了解,glibc是否可以在ABI层面做到向前兼容.那个整个系统能否做到呢?这勾起了我的分析和思考. ABI兼容依赖什么 试想一下,一个程序从源代码到最终的二进制,有哪些组件参与了编译和链接过程,大概如下: 内核导出用户态头文件 gcc编译器,gcc提供的静态.o/.a,以及它提供的动态库(如libgcc_s.so)

linux应用程序地址布局

Linux应用程序在内存中的布局,由高地址到低地址依次为:栈.堆.BSS段.数据段.代码段.代码段的起始地址固定为0x8048000,无论哪一个应用程序它的代码段起始地址一定是0x8048000,这里的地址虚拟地址,映射到不同的物理地址中去. 查看程序各段的地址 ps    aux     这个命令用于查看进程的ID,比如我运行一个可执行程序addr 可以看到addr的进程ID是24048.然后用cat命令查看进程在内部的布局 cat    /proc/进程ID/maps,这里我们是cat   

linux应用程序中的延时和定时器

笔记: 在linux应用程序中延时有sleep().msleep()和usleep()函数之类的延时,也有如下形式的延时: struct timeval delay; delay.tv_sec = sleepSecond; delay.tv_usec = 0; select( 0, NULL, NULL, NULL, &delay ); 但是基本上都是基于进程休眠的,好像没有循环等待的延时,有待证实,目前没发现. 考虑到一个问题,如果定时发送信号,执行相应一个信号处理函数时,该函数还么有执行完成

Linux 应用程序 之 IO编程(一)

我的linux 环境是windows8.1 + VMware6.5.1+  Fedora14,参考书籍:第六章 链接:Linux应用程序开发详解(1-11).pdf 我利用一个SSH软件SSH Secure File Transfer Client 来从Linux传输文件 来张虚拟机运行Fedora的图: 下面步入正题: IO最基本操作: 1 //hello.c 2 #include <unistd.h> 3 #include <sys/types.h> 4 #include &l