首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C strtok()和strcmp()问题

C语言中的strtok()和strcmp()是两个常用的字符串处理函数。

  1. strtok()函数用于将字符串分割成一系列子字符串。它接受两个参数:第一个参数是要分割的字符串,第二个参数是分割字符串的分隔符。函数会返回分割后的第一个子字符串,并将原字符串中的分隔符替换为'\0'。通过多次调用strtok()函数,可以依次获取分割后的所有子字符串。使用strtok()函数时需要注意以下几点:
    • strtok()函数会修改原字符串,因此如果需要保留原字符串,可以先将其拷贝到一个新的变量中。
    • 在第一次调用strtok()函数时,需要将原字符串作为参数传入;在后续调用时,需要将参数设置为NULL。
    • 如果原字符串中连续出现多个分隔符,strtok()函数会将它们视为一个分隔符处理。
    • 例如,以下代码演示了如何使用strtok()函数将字符串按照空格进行分割:
    • 例如,以下代码演示了如何使用strtok()函数将字符串按照空格进行分割:
    • 输出结果为:
    • 输出结果为:
  • strcmp()函数用于比较两个字符串的大小关系。它接受两个参数:第一个参数是要比较的字符串1,第二个参数是要比较的字符串2。函数会返回一个整数值,表示两个字符串的大小关系。具体返回值的含义如下:
    • 如果返回值小于0,表示字符串1小于字符串2。
    • 如果返回值等于0,表示字符串1等于字符串2。
    • 如果返回值大于0,表示字符串1大于字符串2。
    • 例如,以下代码演示了如何使用strcmp()函数比较两个字符串的大小关系:
    • 例如,以下代码演示了如何使用strcmp()函数比较两个字符串的大小关系:
    • 输出结果为:
    • 输出结果为:

总结:

  • strtok()函数用于将字符串分割成子字符串,可以通过多次调用获取所有子字符串。
  • strcmp()函数用于比较两个字符串的大小关系,返回值表示大小关系。
  • strtok()和strcmp()都是C语言中常用的字符串处理函数,可以在各种字符串操作中使用。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云产品:https://cloud.tencent.com/product
  • 腾讯云云原生产品:https://cloud.tencent.com/solution/cloud-native
  • 腾讯云音视频处理产品:https://cloud.tencent.com/solution/media
  • 腾讯云人工智能产品:https://cloud.tencent.com/solution/ai
  • 腾讯云物联网产品:https://cloud.tencent.com/solution/iot
  • 腾讯云移动开发产品:https://cloud.tencent.com/solution/mobile
  • 腾讯云存储产品:https://cloud.tencent.com/solution/storage
  • 腾讯云区块链产品:https://cloud.tencent.com/solution/blockchain
  • 腾讯云元宇宙产品:https://cloud.tencent.com/solution/metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

函数strtolstrtok详解

如果base不等于016,并且字符串以0x(或者0X)开头,那么x被视为非法字符。..., &stop, 13)); printf("%s\n", stop); 输出结果: 0 0x31da6c 最后,需要说明的是,对于nptr指向的字符串,其开头结尾处的空格被忽视,字符串中间的空格被视为非法字符...这个定义国内一些网站上的说法有一些差别,正是这些差别导致很多人对strtok没有一个正确的认识。希望读者在调用一些函数前,最好能够读一读官方的文档(多半都是英文的),而非看一些以讹传讹的资料。...( string, seps ); // C4996 // Note: strtok is deprecated; consider using strtok_s instead while...( NULL, seps ); // C4996 } } 关于strtok函数的用法见链接:http://blog.csdn.net/liuintermilan/article/details/

87110
  • strcmp函数strcpy函数

    (一)strcmp函数 strcmp函数是比較两个字符串的大小,返回比較的结果。...一般形式是: i=strcmp(字符串,字符串); 当中,字符串1、字符串2均可为字符串常量或变量;i 是用于存放比較结果的整型变量。...比較结果是这样规定的: ①字符串1小于字符串2,strcmp函数返回一个负值; ②字符串1等于字符串2,strcmp函数返回零; ③字符串1大于字符串2,strcmp函数返回一个正值;那么,字符中的大小是怎样比較的呢...假设两上字符串前面的字符一直相等,像”disk””disks” 那样, 前四个字符都一样, 然后比較第 五个字符, 前一个字符串”disk”仅仅剩下结束符’/0′,后一个字符串”disks...因此不管两个字符串是什么样,strcmp函数最多比較到当中一个字符串遇到结束符’/0’为止,就能得出结果。 注意:字符串是数组类型而非简单类型,不能用关系运算进行大小比較。

    61120

    C语言——字符函数字符串函数(三)【strtok,strerror,perror】

    (当我们了解了strtok的返回注意事项就会理解) 2,注意事项 strtok函数在找到str中的下一个标记的时候,会将标记用‘\0’结尾(即可能会替换掉这个标记结尾的分隔符) 请看 显而易见...接收到了z的地址 第二次strtok返回1的地址,且把.改成\0,ptr接收了1的地址 第三次strtok返回c的地址,且把\0改成\0(通俗理解),ptr接收了c的地址 然后根据ptr这些地址分别打印出了这些标记...= NULL 二,strerror的使用 头文件: strerror是一个传入错误码作为参数,返回参数部分错误码对应的错误信息的字符串地址的函数 先简单了解什么是错误码: C语言程序启动的时候...,如果程序出现问题,会返回一个错误码,这个错误码会被记录到errno这个全局变量中 不同的错误码都对应着不同的错误信息 使用展示 #include #include <errno.h...fclose(file); return 0; // 返回0表示成功 } 输出结果是完全一样的,perror的不同就在于,它打印完参数部分的字符串后,在打印一个:一个 (空格),接着打印错误信息

    7010

    C语言(字符、字符串函数)2

    6、strcmp 的使用模拟实现 6.1 strcmp 的用法 其实对于 strcmp 函数我们并不陌生,在之前的学习中已经不止一次用到过。...来看下面代码示例: 这个代码有没有什么问题呢?其实,上面的代码在VS中是没有任何问题的,但是在其他编译器中可能就会发生错误。...7、strncpy、strncat strncmp 除了 strcpy、strcat strcmp 外,C语言还提供了更加灵活的 strncpy、strncat strncmp...在不同的系统C语言标准库的实现中都规定了一些错误码,一般是放在 errno.h 这个头文件中说明的,C语言程序启动的时候就会使用一个全局的变量 errno 来记录程序当前的错误码,只不过程序启动的时候...C语言函数中还有一个函数 strerror 函数的功能是相似的,它就是 perror 函数。来看一下它的介绍: 它 strerror 函数的区别在哪里呢?

    7110

    strcmp的使⽤模拟实现

    return 0; } 三:strncmp函数的使用 int strncmp ( const char * str1, const char * str2, size_t num ) ⽐较str1str2...两者区别 在C语言中,strcmp strncmp 是两个用于比较字符串的函数,但它们之间有一些关键的区别。...它的原型在 string.h 头文件中定义如下: int strcmp(const char *s1, const char *s2); strcmp的工作方式是逐字符比较s1s2 指向的字符串,直到遇到不同的字符或遇到字符串结束符...如果 s1 s2 相同,返回 0。 如果 s1 在字典顺序上小于 s2,返回一个负数。 如果 s1 在字典顺序上大于 s2,返回一个正数。..."strncmp(str1, str2, 13): %d\n", strncmp(str1, str2, 13));  // 输出一个负数 } 注意:这两个函数都是区分大小写的,所以 "Hello"

    8710

    C语言字符串相关函数使用示例 strtok_r strstr strtok atoi

    通过一个实际小应用,记录C语言中4个字符串操作相关的函数及其用法: strtok_r strstr strtok atoi 问题引出 先贴一段变量定义: char str[] = "led,100,0,80,15...下面就介绍C语言中的几种函数来解决这个问题。 函数介绍与示例 strtok_r 首先需要将字符串切分为指令参数形式,需要用到strtok_r函数。...我们将上面问题中的str作为原始字符串传入,分隔符选用逗号,切分后的保存在上面定义的paras变量中,返回值保存在上面定义的cmd变量中: char *cmd;//表示命令 char *paras;//...r\n", paras);//获取后续字符串 查看测试结果: cmd:led paras:100,0,80,15 可以看到成功切分出了我们需要的命令参数两种字符串。...至此,文章开头提出的问题已经解决,下面贴出完整测试代码。

    1.5K41

    C进阶】——详解10个C语言中常见的字符串操作函数及其模拟实现

    这篇文章给大家介绍一些C语言中处理字符串的 库函数 以及它们的使用注意事项,一起来学习吧!!!...本篇文章介绍的函数需要包含的头文件都是#include 前言 C语言中对字符字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串 中或者 字符数组...(arr, arr2)); return 0; } arrarr1进行比较,前两个字符ab都相同,第三对字符arr的’x’大于arr1的’c’,所以arr大于arr1,返回1。...return 0; s1++; s2++; } if (*s1 > *s2) return 1; else return -1; } 看看效果: 当然这里我们实现的strcmp...它的比较规则以及返回值strcmp还是一样的。

    77710

    C】字符串函数——大全(简洁,精炼,初学者)

    前言:大家好,这里是YY;此篇博客主要是字符串函数的知识点;包含【C语言对字符字符串的处理】【strlen】【strcpy】【stract】【strcmp】【strcpy,strcmp,strcat...一.C语言对字符字符串的处理 C语言中对字符字符串的处理很是频繁,但是C语言本身并没有字符串类型,字符串通常放在常量字符串或者字符数组中。...使用场景: 1.模拟实现strcmp 原理:逐字符比较 六.strcpy,strcmp,strcat与strncpy,strncmp,strncat比较 直观区别: 长度受限制的字符串函数...对比,解决了无法自己追加自己的问题 特性: strncat追加的字符串后面还是有\0 追加的个数n,不包含\0 一:情景: "自己追加自己"可行 原理: strncat追加的字符串后面还是有...tolower;返回转换后的小写字母,若不须转换则将参数c值返回。

    21610

    C语言字符(串)函数

    在我们写代码的过程中呢,经常会遇到一些处理字符字符串的问题,比如将大小写字母的转换,计算字符串长度等,为了方便操作这些字符字符串,C语言标准库提供了一些库函数,接下来就学习一下这些字符字符串函数...[] = "abddef"; int ret1 = strcmp(str1, str2); int ret2 = strcmp(str1, str3); int ret3 = strcmp(str1...strtok 函数类型: char * strtok ( char * str, const char * sep); strtok函数是在str字符串中,寻找sep中字符串的内容,找到并将其修改成...strtok函数的第一个参数不为NULL,函数将找到str中第一个标识,strtok函数将保存它在字符串 中的位置。...知识补充: 在不同的系统C语言标准库的实现中都规定了一些错误码,一般是放在 errno.h 这个头文件中说明的,C语言程序启动的时候就会使用一个全局的变量errno来记录程序的当前错误码,只不过程序启动的时候

    7610

    【Linux】实现一个简易的shell命令行

    今天我们尝试在Linux使用C语言自己实现一个简单的shell命令行程序,它可以像真的命令行那样执行命令, 与程序员交互, 话不多说, 先来看看实现效果吧: myshell功能测试 二.分析项目实现...: 获取命令行 解析命令行 建立一个子进程(fork) 替换子进程(execvp) 父进程等待子进程退出(wait) 三.逐步实现项目功能 该部分只讲功能实现的代码逻辑, 故可能不会包含宏定义全局变量等实现细节...quit) { //2.交互问题,获取命令行内容 interact(commandline,sizeof(commandline)); //3.分割命令字符串strtok(),解析命令行...(_argv[0],"echo") == 0) { if(strcmp(_argv[1],"$?")...quit) { //2.交互问题,获取命令行内容 interact(commandline,sizeof(commandline)); //printf("echo:%s\n",commandline

    9010

    C语言(10)----字符函数字符串函数

    C语言中字符字符串的使用非常之多。为了提高代码的效率以及精简代码,C语言规定了一系列的字符函数字符串函数。接下来对常用的函数进行介绍。...用法:(以islower为例) int islower (int c)//检测c是否为小写字母 通过返回值确定是否为小写字母。如果返回值是非0,则是小写字母,如果是0,则不是小写字母。...strcmp函数 string compare的缩写----字符串比较 格式: int strcmp (const char* str1,const char* str2) 作用: 进行str1-str2...实例 //strcmp的实例 int main() { int ret = strcmp("abcabc", "abcabcabc"); printf_s("%d", ret); return...; } return *str1 - *str2;//判断大于或小于0的情况 } strncpy、strncat、strncmp函数 一般来说,使用n形式函数会更安全,因为它可以避免缓冲区溢出的问题

    14110

    C 语言】C 字符串 ( 表示方法 | strcpy | strcat | strlen | strcmp )

    文章目录 C 字符串表示方式 C 字符串 拷贝 ( strcpy ) C 字符串 拼接 ( strcat ) C 字符串 长度获取 ( strlen ) C 字符串 对比 ( strcmp ) C...) C 字符串 对比 ( strcmp ) : 1.方法参数 : 参数是需要比较的两个字符串 , 第一个参数 str1 , 第二个参数 str2 ; 2.方法作用 : str1 str2 两个字符串...ASCII 表 : 5.代码示例 : //字符串比较 // ① 参数说明 : 参数是需要比较的两个字符串 , 第一个参数 str1 , 第二个参数 str2 // ② 对比规则 : str1 ..."Hello"; char* string_c_comp_3 = "hello"; // ① 两个字符串相等 int cmp_result_1_2 = strcmp(string_c_comp..." 字符串 (H 对应 ASCII 72) , 返回值 大于 0 int cmp_result_3_1 = strcmp(string_c_comp_3, string_c_comp_1); //

    60720

    【Linux】shell命令行简单解释器

    下面我们直接来看一看如何去实现shell命令行解释器: 总体分为(整体需要循环哦): 1.输出提示符 2.输入获取命令 3.fork创建子进程 4.内建命令 ---- 输出提示符 这里的提示字符为用户名...@主机名 当前路径# 直接打印出来作为提示所用,也可以自己设置成其他的,问题不大 printf("用户名@主机名 当前路径# "); 同时,这里并没有\n,会有缓冲区的问题,类似于我们之前所说的进度条所遇到的问题...,在这个地方哦可以用fflush(stdout)刷新缓冲区 输入获取命令 输入 我们需要获取一行的内容,利用fgets函数获取,同时,可以定义一个lineCommand[NUM]数组 char*s...把字符串切割成若干个子串: strtok:第一次直接传递参数,第二次则必须传NULL。且在最终strtok会返回NULL。...=NULL && strcmp(myargv[0],"echo")== 0) { if(strcmp(myargv[1],"$?")

    22230
    领券