strlen()

用于得到字符数组中第一个\0前的字符的个数,格式如下:

strlen(数组);

例子:

#include <stdio.h>
#include <string.h> int main(){
char str[10];
gets(str);
int len = strlen(str);
printf("%d\n", len);
return 0;
}

输入:

ababab

输出:

6

strcmp()

用于比较字符串大小,比较原则是按照字典序:

strcmp(字符数组1, 字符数组2)

如果数组1长则返回正数,数组2长则返回负数,相等返回0。

#include <stdio.h>
#include <string.h> int main(){
char str1[50], str2[50];
gets(str1);
gets(str2);
int cmp = strcmp(str1, str2);
if(cmp < 0) printf("str1 < str2\n");
else if (cmp > 0) printf("str1 > str2\n");
else printf("str1 == str2\n");
return 0;
}

上图中前两行是输入,最后一行是输出。

strcpy()

复制字符串给另一个字符串,用法:strcpy(str1, str2)。这样会把str2内容复制到str1

示例:

#include <stdio.h>
#include <string.h> int main(){
char str1[50], str2[50];
gets(str1);
gets(str2);
strcpy(str1, str2);
puts(str1);
return 0;
}

strcat()

拼接两个字符串,strcat(str1, str2)

#include <stdio.h>
#include <string.h> int main(){
char str1[50], str2[50];
gets(str1);
gets(str2);
strcat(str1, str2);
puts(str1);
return 0;
}

sscanf与sprintf

sscanfsprintf是专门用于处理字符串的,可以理解为“string + scanf”和“string + printf”。

用法就类似于在内存上以scanfprintf的方式将数据进行传递。举个例子,sscanf(str, "%d", &n);,这就是将str中内容以%d的格式写入到n中(可以这样理解,scanf(screen, "%d", &n);相当于是从screen屏幕捕获输入并输入到n中,从左到右,而sscanf起到的作用就差不多这样,从str按照"%d"的格式输入到n。sprintf则反过来,从右往左)。

比较简单,直接上示例:

#include <stdio.h>

int main() {
int n;
char str[100] = "123";
sscanf(str, "%d", &n);
printf("%d\n", n);
return 0;
}

#include <stdio.h>

int main(){
int n = 233;
char str[100];
sprintf(str, "%d", n);
printf("%s\n", str);
return 0;
}

复杂点的例子:

#include <stdio.h>

int main(){
int n;
double db;
char str[100] = "2048:3.14, hello", str2[100];
sscanf(str, "%d:%lf, %s", &n, &db, str2);
printf("n = %d, db = %.2f, str2 = %s\n", n, db, str2);
return 0;
}

在字符串处理的时候相当有用。

C++笔记(3)——string.h相关的一些小知识的更多相关文章

  1. C标准库<string.h>实现

    本文地址:http://www.cnblogs.com/archimedes/p/c-library-string.html,转载请注明源地址. 1.背景知识 <string.h>中声明的 ...

  2. 彻底弄清c标准库中string.h里的常用函数用法

    在我们平常写的c/c++程序,一些算法题中,我们常常会用到c标准库中string.h文件中的函数,这些函数主要用于处理内存,字符串相关操作,是很有用的工具函数.而且有些时候,在笔试或面试中也会出现让你 ...

  3. c语言string.h和memory.h某些函数重复问题

    在C语言中,为了使用memset()函数,你是选择#include <string.h>还是<memory.h>?两个都可以,如何选择? <string.h>,标准 ...

  4. [C++]在什么时候需要“#include string.h“

    相关资料:https://zhidao.baidu.com/question/515578726.html C++中,string头文件基本上已经包含在iostream中了.但是,平时使用的时候建议加 ...

  5. 头文件string与string.h的区别

    在C++中,#include<iostream>与#include<iostream.h>的区别,前者要使用更新的编译器(其实大部分编译器多比较前卫了,出了有些搞嵌入式的用变态 ...

  6. C++中cstring.h和string.h的区别

    转载:https://blog.csdn.net/qian_chun_qiang/article/details/80648691 1.string与cstring有什么区别 <string&g ...

  7. 震惊!<string.h>、<cstring>和<string>竟然可以这么用!

      为什么有这么多string相关的头文件呢,小编秦始皇今天带大家看一下: 1.[string.h]   定义如下:"C语言标准库中一个常用的头文件,在使用到字符数组时需要使用.[strin ...

  8. 《C标准库》——之<string.h>

    <string.h>里的字符串操作函数是经常要用到的,因此阅读了源码后自己实现了一些: 拷贝函数 void * Mymemcpy(void * sDst, const void * sSr ...

  9. <string> 与<string.h>、<cstring>的区别

    <string.h> <string.h>是C版本的头文件,包含比如strcpy.strcat之类的字符串处理函数. <cstring> 在C++标准化(1998年 ...

随机推荐

  1. 系统芯片 SoC

    SoC的定义多种多样,由于其内涵丰富.应用范围广,很难给出准确定义.一般说来, SoC称为系统级芯片,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内 ...

  2. Struts2中的ModelDriven机制及其运用、refreshModelBeforeResult属性解决的问题

    1.为什么需要ModelDriven? 所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象.比如,有实体类User如下: package cn.com.leadfar.struts2 ...

  3. win10专业版安装docker实战

    在win10专业版上安装docker 一,下载Docker for Windows Installer.exe 二,在程序面板---程序----程序和功能中找到启动或关闭windows功能,将hype ...

  4. 使用Grizzy+Jersey搭建一个RESTful框架()报错Exception in thread "main" java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder;

    报错的类涉及UriBuilder,我搜索类发现, 这个类存在于两个包中,我在baidu的时候,也有人提到是jar包冲突,我就删除了 这个依赖,问题解决了. 环境搭建过程请见地址https://blog ...

  5. win10备忘

    你要允许来自未知发布者 http://www.xitonghe.com/jiaocheng/Windows10-7809.html输入法 切换繁体 ctrl+shift+F win10 输入法 htt ...

  6. Linux 安全工具之extundelete误删除恢复

    一:前言 在Linux中,我们通常会因为误删除文件而感到烦恼,rm -rf +文件  rf参数简直就是每个运维的噩梦,但是大家想过没,为什么删除文件那么快呢,为什么我们copy文件的时候那么慢. 其实 ...

  7. Runtime 源码阅读

    Runtime 属性说明 /** * 每一个 Java 应用程序都有一个关联的运行时对象 * * @author unascribed * @see java.lang.Runtime#getRunt ...

  8. C++ 学习安排

    第一阶段主要是理解概念及最基本的定义和声明包含以下内容:1. 头文件2. 命名空间3. 变量和基本类型4. 函数5. 类6. 标准库类型第二部分进阶入门,主要学习C++中的某些内容的特殊性及逻辑编写1 ...

  9. 算法试题 - 找出最小 k 个数

    题目 题目:输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 解析 思路1 这一题应用堆排序算法复杂度只有O(nlog k), ...

  10. AXIS 1.4 自定义序列化/反序列化类

    axis1.4的CalendarDeserializer 使用的时区是GMT,导致日期显示不准确 private static SimpleDateFormat zulu = new SimpleDa ...