十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
返回该字符串的首地址,用char*表示,如果不存在,则返回空指针NULL
成都创新互联公司拥有十年成都网站建设工作经验,为各大企业提供成都网站设计、成都网站建设服务,对于网页设计、PC网站建设(电脑版网站建设)、成都APP应用开发、wap网站建设(手机版网站建设)、程序开发、网站优化(SEO优化)、微网站、域名注册等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了很多网站制作、网站设计、网络营销经验,集策划、开发、设计、营销、管理等网站化运作于一体,具备承接各种规模类型的网站建设项目的能力。
第一个没看懂
至于第二个,从main开始, int i; char s[10];gets(s);puts(s);,这明白吧,fun(s)这一句,就是把S数组传给str,说简单点fun函数中的str和S一样,但对str的操作不影响S(指针除外),所以最终程序的运行结果屏幕上总共有5个数组,倒数第二个与其它的不一样!
一:格式输出函数printf()
1、调用形式一般为:printf("格式化控制字符串",输出表列);
2、格式化控制字符串用于指定输出格式,它有三种形式:
1、格式说明符:规定了相应输出表列内容的输出格式,以%打头,如%d、%o等
2、转义字符:用来输出转义字符所代表的控制代码或者特殊字符,比如常用的‘\n'、‘\t'
3、普通字符:需要原样输出的字符。
3、输出表列为若干需要输出的数据项,它与格式说明符在数量和类型上一一对应;
4、格式字符m指定输出数据所占宽度,n对实数表示输出n位小数,对字符串表示截取的字符个数,+表示右对齐,通常省略。
—表示左对齐,l用于长整型数据,可加在d、o、x、u前,更多格式说明符及其组合形式如下所示:
格式字符
数据对象
输出形式
数据输出方法
%(+)-md
int
unsigned
int
short
unsigned
short
char
十进制整数
1、无m按实际位数输出
2、有m输出m位;超过m位,按实际位数输出,不足补空格
3、有+(默认为+)右对齐(左补空格)
4、有-左对齐(右补空格)
%(+)-mo
八进制整数
%(+)-mx
十六进制整数
%(+)-mu
无符号整数
%(+)-mld
long
unsigned
long
十进制整数
%(+)-mlo
八进制整数
%(+)-mlx
十六进制整数
%(+)-mlu
无符号整数
%(+)-m.nf
float
double
十进制小数
%(+)-m.ne
十进制指数
%(+)-g
自动选用%f和%e中较短的输出宽度输出单、双精度浮点数
%(+)-mc
char
int
short
单个字符
1、无m输出单个字符
2、有m输出m位,补空格
3、有+(默认为+)右对齐(左补空格)
4、有-左对齐(右补空格)
%(+)-m.ns
字符串
一串字符
1.无m、n按实际字符串输出全部字符
2、有m、n仅输出前n个字符,补空格
3.有+(默认为+)右对齐(左补空格)
4、有-左对齐(右补空格)
二:格式输入函数scanf()
1、
调用格式一般为:scanf("格式化控制字符串",地址表列);
2、格式化控制字符串和printf()函数含义相似,所不同的是它是对输入格式进行控制;
3、地址表列是有若干等待输入的数据所对应的内存单元地址组成,由逗号隔开,一般形式为a,a为变量;
4、地址表列在数量和类型上和格式化控制字符串中的格式说明符一一对应;
5、格式字符h表示输入短型数据,可用在d、o、x前面,m指定输入数据所占宽度,
*表示对应的数据项读入后不赋给相应的变量,更多格式说明符及其组合如下
格式字符
数据对象
输入形式
数据输入方法
%md
int
short
unsigned
int
unsigned
short
十进制整数
1、无m按实际位数输入
2、有m输入m位,不足m则跟回车键
%mo
八进制整数
%mx
十六进制整数
%mld
long
unsigned
long
十进制整数
%mlo
八进制整数
%mlx
十六进制整数
%mlf
float
double
十进制整数
%mle
%mc
char
单个字符
1、无m取单个字符
2、有m输入m位,仅取第一个字符
%ms
字符串
一串字符
1、无m取回车或空格前若干字符
2、有m仅取前m字符
复制相关函数:memcpy、memmove、strcpy、strncpy
字符串连接函数:strcat、strncat
字符串比较函数:memcmp、strcmp、strcoll、strncmp、strxfrm、
查找函数:memchr、strchr、strcspn、strpbrk、strrchr、strspn、strstr、strtok
其他相关函数:memset、strerror、strlen
自定义函数时字符串的格式:char *function(); char *function(char ch[]) { return ch; } main { char c[]={"ABCDEFG"}; printf("%s",function(c)); }
string.h头文件中包含的字符串函数
void *memcpy(void *dest, const void *src, size_t n);//将n字节长的内容从一个内存地址复制到另一个地址;如果两个地址存在重叠,则最终行为未定义
void *memmove(void *dest, const void *src, size_t n);//将n字节长的内容从一个内存地址复制到另一个地址;与memcpy不同的是它可以正确作用于两个存在重叠的地址
void *memchr(const void *s, char c, size_t n);//在从s开始的n个字节内查找c第一次出现的地址并返回,若未找到则返回NULL
int memcmp(const void *s1, const void *s2, size_t n);//对从两个内存地址开始的n个字符进行比较
void *memset(void *, int, size_t);//用某种字节内容覆写一段内存空间
char *strcat(char *dest, const char *src);//在字符串dest之后连接上src
char *strncat(char *dest, const char *src, size_t n);//从src截取n个字符连接在字符串dest之后,返回dest字符串
char *strchr(const char* str, int ch);//从字符串str头开始查找字符ch首次出现的位置
char *strrchr(const char* str,int ch);//从字符串str尾开始查找字符ch首次出现的位置
int strcmp(const char *, const char *);//基于字典顺序比较两个字符串
int strncmp(const char *, const char *, size_t);//基于字典顺序比较两个字符串,最多比较n个字节
int strcoll(const char *, const char *);//基于当前区域设置的字符顺序比较两个字符串
char *strcpy(char* str1, const char* str2);//将str2拷贝给str1
char *strncpy(char* str1, const char* str2, size_t n);//截取str2的n个字符拷贝给str1
char *strerror(int);//返回错误码对应的解释字符串,参见errno.h(非线程安全函数)
size_t strlen(const char *);//返回一个字符串的长度
size_t strspn(const char *s, const char *strCharSet);//从字符串s的起始处开始,寻找第一个不出现在strCharSet中的字符,返回其位置索引值。换句话说,返回从字符串s的起始位置的完全由strCharSet中的字符构成的子串的最大长度。strspn为string span的缩写。不支持多字节字符集。
size_t strcspn(const char *s, const char *strCharSet);//从字符串s的起始处开始,寻找第一个出现在strCharSet中的字符,返回其位置索引值。换句话说,返回从字符串s的起始位置的完全由不属于strCharSet中的字符构成的子串的最大长度。strcspn为string complement span的缩写。不支持多字节字符集。
char *strpbrk(const char *s, const char *strCharSet);//在字符串s中查找strCharSet中任意字符第一次出现的位置的指针值。strpbrk为string pointer break缩写。不支持多字节字符集。
char *strstr(const char *haystack, const char *needle);//在字符串haystack中查找字符串needle第一次出现的位置,heystack的长度必须长于needle
char *strtok(char *strToken, const char *strDelimit );//将一个字符串strToken依据分界符(delimiter)分隔成一系列字符串。此函数非线程安全,且不可重入;但MSVC实现时使用了thread-local static variable因而是线程安全的单仍然是不可重入,即在单线程中不能对两个源字符串交替调用该函数来分析token,应当对一个字符串分析完成后再处理别的字符串。
size_t strxfrm(char *dest, const char *src, size_t n);//根据当前locale转换一个字符串为strcmp使用的内部格式