string.h

strcmp() 和 strncmp()

strcmp()

函数原型:

int strcmp(const char *str1, const char *str2)

参数:

str1 -- 要进行比较的第一个字符串。

str2 -- 要进行比较的第二个字符串。

把 str1 所指向的字符串和 str2 所指向的字符串进行比较。

返回值:

该函数返回值如下:

如果返回值小于 0,则表示 str1 小于 str2。

如果返回值大于 0,则表示 str1 大于 str2。

如果返回值等于 0,则表示 str1 等于 str2。

The ANSI standard says that strcmp() returns a negative number if the first string comes before the second alphabetically, returns 0 if they are the same, and returns a positive number if the first string follows the second alphabetically. (ANSI标准规定,如果第一个字符串按字母顺序排在第二个字符串之前,则strcmp()返回一个负数,如果它们相同则返回0,如果第一个字符串按字母顺序排在第二个字符串之后则返回一个正数。)

strncmp()

函数原型:

int strncmp(const char *str1, const char *str2, size_t n)

参数

str1 -- 要进行比较的第一个字符串。

str2 -- 要进行比较的第二个字符串。

n -- 要比较的最大字符数。

把 str1 和 str2 进行比较,最多比较前 n 个字节。

返回值

该函数返回值如下:

如果返回值 < 0,则表示 str1 小于 str2。

如果返回值 > 0,则表示 str1 大于 str2。

如果返回值 = 0,则表示 str1 等于 str2。

strcpy() 和 strncpy()

strcpy()

函数原型:

char *strcpy(char *dest, const char *src)

参数:

dest -- 指向用于存储复制内容的目标数组。

src -- 要复制的字符串。

把 src 所指向的字符串复制到 dest。

当目标数组 dest 足够大时,dest 的剩余部分将用空字节填充。

需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。

返回值: 该函数返回一个指向最终的目标字符串 dest 的指针。

strncpy()

函数原型:

char *strncpy(char *dest, const char *src, size_t n)

参数:

dest -- 指向用于存储复制内容的目标数组。

src -- 要复制的字符串。

n -- 要从源中复制的字符数。

把 src 所指向的字符串复制到 dest,最多复制 n 个字符。当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。

返回值: 该函数返回最终复制的字符串。

strcat() 和 strncat()

strcat()

函数原型:

char *strcat(char *dest, const char *src)

参数:

dest -- 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串。

src -- 指向要追加的字符串,该字符串不会覆盖目标字符串。

返回值: 该函数返回一个指向最终的目标字符串 dest 的指针。

The strcat() (for string concatenation ) function takes two strings for arguments. A copy of the second string is tacked onto the end of the first, and this combined version becomes the new first string. The second string is not altered. The strcat() function is type char * (that is, a pointer-to- char ). It returns the value of its first argument—the address of the first character of the string to which the second string is appended.

strncat()

函数原型:

char *strncat(char *dest, const char *src, size_t n)

参数:

dest -- 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串,包括额外的空字符。

src -- 要追加的字符串。

n -- 要追加的最大字符数。

把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。

返回值:该函数返回一个指向最终的目标字符串 dest 的指针。

puts() 和 puts()

puts()

函数原型:

int puts(const char *str)

str -- 这是要被写入的 C 字符串.

如果成功, 该函数返回一个非负值为字符串长度 (包括末尾的 \0), 如果发生错误则返回 EOF.

作用: puts() 函数只显示字符串, 把一个字符串写入到标准输出 stdout, 直到空字符, 但不包括空字符. 行末自动添加换行符.

给 puts() 函数一个字符的地址,就一直向后输出字符,直至遇到空字符,不输出空字符,自动添加一个换行符

程序示例:

#include<stdio.h>
int main(void)
{
char str1[] = "hello";
puts(str1);
puts(str1);
return 0;
}

结果:

hello
hello

可以看出自动换行了.

gets()

函数原型:

char *gets(char *str);

只有一个参数。参数类型为 char* 型,即 str 可以是一个字符指针变量名,也可以是一个字符数组名。

gets() 函数的功能是从输入缓冲区中读取一个字符串存储到字符指针变量 str 所指向的内存空间

gets() 函数可以读取整行输入, 直到遇到换行符, 然后丢弃换行符, 储存其余字符, 并在这些字符的末尾添加一个空字符使其成为一个 C 字符串.

gets() 将换行符丢弃了,没有放进字符串中,也不在缓冲区中,因此不会影响下一次读取

gets() 经常和 puts() 配对使用. puts() 用于显示字符串, 并自动添加换行符.

程序示例:

#include<stdio.h>
int main(void)
{
char ch[20] = { '\0' };
printf("请输入字符串:");
gets(ch);
puts(ch);
return 0;
}

结果:

请输入字符串:i love you!
i love you!

gets() 函数不安全的地方: 只有一个参数, 即读入的这个字符串应该放在内存中的位置, 而不知道这个位置能否放得下你读进来的这么多内容.

posted @   有空  阅读(5)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示

目录导航