首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >字符串相关函数

字符串相关函数

作者头像
用户7272142
发布2023-10-11 20:53:19
发布2023-10-11 20:53:19
3310
举报
文章被收录于专栏:Republic博客Republic博客

gets函数

作用是从终端输入一个字符串到字符数组,并且得到一个函数值。

代码语言:javascript
复制
// crt_gets.c
// compile with: /WX /W3

#include <stdio.h>

int main( void )
{
   char line[21]; // room for 20 chars + '\0'
   gets( line );  // C4996
   // Danger: No way to limit input to 20 chars.
   // Consider using gets_s instead.
   printf( "The line entered was: %s\n", line );
}

puts

作用是从终端输入一个字符串到字符数组,并且得到一个函数值。

代码语言:javascript
复制
// crt_gets.c
// compile with: /WX /W3

#include <stdio.h>

int main( void )
{
   char line[21]; // room for 20 chars + '\0'
   gets( line );  // C4996
   // Danger: No way to limit input to 20 chars.
   // Consider using gets_s instead.
  puts(line);
}

strcat 函数

作用是把两个字符数组中的字符串连接起来,把字符串2连接到字符串1的后面,结果放在字符数组1中。

函数原型 char * strcat (char destination[], const char source[]); 返回值是第一个字符串的首地址

代码语言:javascript
复制
#include<string.h>
#include<stdio.h>
#pragma warning (disable:4996)
int main()
{
    char str1[20] = "cv";
    char str2[] = "potatao";
    strcat(str1, str2);
    puts(str1);
}

需要注意的是str1必须足够存放str2的大小。

strcpy函数(strncpy按字符拷贝字符串)

函数原型 char * strcpy( char destination[], const char source[]); 将参数2的字符串拷贝到第一个参数去,第二个参数的结束符号,也会被拷贝到第一个参数中去

代码语言:javascript
复制
#include<string.h>
#include<stdio.h>
#pragma warning (disable:4996)
int main()
{
char des[50] = {0};  
char src[] = "cctry.com";  
strcpy(des, src);  
cout << "des = " << des << endl;
}

我的例子都写一块了,不方便看,借用一下VC驿站前辈的代码! strncpy需要注意的 strncpy()不会向dest追加结束标记'\0',因此如果src的前n个字节不含'\0'字符,则结果不会以'\0'字符结束,可能导致错误。如果src的长度小于n个字节,则以'\0'填充dest直到复制完n个字节,因此若n的值过大,则其将其余数据全置为'\0'的行为会导致效率低下

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
int main(){
    char str1[10] ="";     //定义空数组str1
    char str2[10] = "kgtj";//定义数组str2
 
    strncpy(str1, str2, 1);
 
    printf("%s\n", str1);
 
    return 0;
}

strcmp函数(strncmp函数)

函数原型int strcmp (const char str1[], const char str2[]); 比较参数1和参数2,通过比较每个字母的ascll的值 来确定大小 `如果ret>0 参数1>参数2 如果ret<0 参数1<参数2 如果ret=0 参数1=参数2 比如第一个参数的第一个字符是b 第二个参数的字符是a 这时候返回1 如果第一个参数的第一个字符和第二个参数的第二个字符相等 则继续比较第一个参数的第二个字符与第二个参数的第二个字符 第一个参数的第一个字符是a 第二个参数的字符是b 这时候返回-1

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
int main(){
char des[50] = "hello";  
char src[] = "cctry.com";  
int iret = strcmp(des, src);  
cout << "iret = " << iret << endl;
}

依旧是VC驿站!! strncmp 可指定比较长度,即比较给定两个字符串前n个字符的大小情况

strlen函数

函数原型size_t strlen (const char str[]); 求得参数字符串的长度,通过返回值返回。

代码语言:javascript
复制
char des[50] = "hello";  
int len = strlen(des);  
cout << "len = " << len << endl;

获取字符串的长度 没有算结束符 所以是5个字符 如果要求字符串占多少内存空间可以用sizeof(des) 因为字符是一个字节,所以不需要除类型所占字节数

strlen和sizeof的区别

strlen结束读取字符串结束标志之前的长度 不包括\0 sizeof 其实就是一个运算符,主要用来计算所占空间字节的大小。包括\0 char str[50]="i love c"; strlen(str)--->8 sizeof(str)--->50

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • gets函数
  • puts
  • strcat 函数
  • strcpy函数(strncpy按字符拷贝字符串)
  • strcmp函数(strncmp函数)
  • strlen函数
    • strlen和sizeof的区别
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档