C语言函数

109 阅读3分钟
mindmap
      C函数
          sscanf
          sprintf
          strstr
          strncmp
          strcmp
          strtol

sscanf

  • int sscanf(const char *str, const char *format, ...)
  • 从字符串读取格式化输入。 使用方法

char data_buf[100] = "张三,89,98,56"
char name;
int scores1, scores2, scores3;

/** %[^,] 读取,以外的所有字符串 */
sscanf(data_buf, "%[^,],%d,%d,%d,", name, &scores1, &scores2, &scores3);

printf("result:%s %d %d %d", name, scores1, scores2, scores3);
/** result:张三 89 98 56  */

sprintf

  • int sprintf(char str, const char format, ...)  
  • 发送格式化输出到 str 所指向的字符串

使用方法

char str[100];
sprintf(str, "%s,%d,%d,%d", name, scores1, scores1, scores1);
printf("str:%s", str);
/** str:张三,89,98,56 */

strstr

使用方法

C 库函数 **char *strstr(const char *haystack, const char *needle)**
在字符串 **haystack** 中查找第一次出现字符串 **needle** 的位置,不包含终止符 '\0'。
#include <stdio.h>
#include <string.h>
 
int main()
{
   const char haystack[20] = "RUNOOB";
   const char needle[10] = "NOOB";
   char *ret;
 
   ret = strstr(haystack, needle);
 
   printf("子字符串是: %s\n", ret);
   
   return(0);
}
打印结果:      子字符串是: NOOB

strncmp

strncmp()  是一个标准库函数,用于比较两个字符串的前 n 个字符是否相等。

strncmp()  函数通常用于比较两个字符串,以确定它们是否相等或哪个字符串在字典顺序上更小。 image.png image.png

strcmp

image.png

strtol

作用及描述

  • 函数用来将字符串转换为长整型数(long)

声明

long int strtol (const char* str, char** endptr, int base);

函数入参

  • str为要转换的字符串
  • endstr 为第一个不能转换的字符的指针
  • base 为字符串 str 所采用的进制(参数 base 范围从2 至36,或0)
  1. 当 base= 0 时,默认采用 10 进制转换,但如果遇到 '0x' / '0X' 前置字符则会使用 16 进制转换,遇到 '0' 前置字符则会使用 8 进制转换。
  2. 若endptr !=NULL,则会将遇到的不符合条件而终止的字符指针由 endptr 传回;
  3. 若 endptr = NULL,则表示该参数无效,或不使用该参数。
#include <iostream>
#include <string>

int main() {
	
	char szNumbers[] = "2001 60c0c0 -1101110100110100100000 0x6fffff";
	char * pEnd;
	long int li1, li2, li3, li4;
	li1 = strtol(szNumbers, &pEnd, 10);	//用十进制   解析2001
        /** pEnd就是剩余的:60c0c0 -1101110100110100100000 0x6fffff */ 
	li2 = strtol(pEnd, &pEnd, 16);		//用十六进制 解析60c0c0
        /** pEnd就是剩余的:-1101110100110100100000 0x6fffff */ 
	li3 = strtol(pEnd, &pEnd, 2);		//用二进制   解析-1101110100110100100000
        /** pEnd就是剩余的:0x6fffff */ 
	li4 = strtol(pEnd, NULL, 0);		//自动判断   解析0x6fffff
	
	printf("转换成10进制: %ld、%ld、%ld、%ld\n", li1, li2, li3, li4);	//转换成10进制: 2001、6340800、-3624224、7340031

	return 0;
}
  • ANSI C 规范定义了 stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6个可以将字符串转换为数字的函数