C语言 strcmp、strncpy、sprintf、strncmp函数总结

一. sprintf

1.函数简介

sprintf 是将一个格式化的字符串输出到一个目的字符串中。

#include 
 
int main()
{
    char buf[1024] = { 0 };
 
    sprintf(buf,"www.codersrc.com\n");
    printf("%s", buf);
 
    sprintf(buf,"www.codersrc.com age:%d\n",17);
    printf("%s", buf);
 
    sprintf(buf,"www.codersrc.com age:%d name:%s\n",17, "zhangsan");
    printf("%s", buf);
 
    sprintf(buf,"www.codersrc.com age:%d name:%s height:%f\n",17, "zhangsan",1.75);
    printf("%s", buf);
}
输出:

 www.codersrc.com
 www.codersrc.com age:17
 www.codersrc.com age:17 name:zhangsan
 www.codersrc.com age:17 name:zhangsan height:1.750000

2.sprintf/fprintf/printf 函数区别

sprintf 是将一个格式化的字符串输出到一个目的字符串中;
printf 是将一个格式化的字符串输出到屏幕;
fprintf 是将一个格式化的字符串写入文件中;

二. strncpy

1.函数简介
strDest:目的字符串
strSource:源字符串
count:复制字符个数
作用:将源字符串中最多count个字符复制到目的字符串中,返回指向目的字符串的指针。

int main()
{
	char dest[20] = "abcd";
	char *src = "hello";
	strncpy(dest, src, 2);
	printf("%s\n", dest);
	system("pause");
	return 0;
}
输出:hecd

2. 函数实现
几点注意细节:
(1)判断地址是否为空(使用断言)
(2)要保证目的字符串的长度足够,能够容纳原串的长度
(3)拷贝时dest会移动,而最终要返回的是拷贝后字符串的起始地址,因此要先保存dest的地址,便于最终返回。

#define   _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
char *MyStrncpy(char *dest, const char *src, int count)
{
	char *p = dest;
	assert(dest != NULL && src != NULL);
	//断言dest不为空,src不为空
	while (count)
	{
		*dest++ = *src++;
		count--;
	}
	return p;
}
int main()
{
	char dest[20] = "abcd";
	char *src = "hello";
	MyStrncpy(dest, src, 2);
	printf("%s\n", dest);
	system("pause");
	return 0;
}
输出:hecd

三. strncmp语法

1.函数声明

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

2.参数

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

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

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

3.返回值

该函数返回值如下:
如果返回值 < 0,则表示 str1 小于 str2。
如果返回值 > 0,则表示 str2 小于 str1。
如果返回值 = 0,则表示 str1 等于 str2。

4.功能比较

函数 strncmp 与函数strcmp极为类似,但功能不完全相同,区别如下:

(1)strncmp函数

用来比较s1和s2字符串的前n个字符。如果两个字符串相等的话,strncmp将返回0。如果s1是s2的一个子串的话,s1小于s2。

(2)strcmp函数

同样用于比较两个字符串 ,设这两个字符串为str1,str2

若str1==str2,则返回零;
若str1 > str2,则返回正数;
若str1< str2,则返回负数。

即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇"\0"为止。

(3)总结

两者不同之处是,strncmp函数是指定比较size个字符,strcmp函数比较整个字符,直到出现不同的字符或遇"\0"为止。

应用示例
示例1

#include 
#include 

int main(){
    char *buf1="aaabbb",*buf2="bbbccc",*buf3="ccc";
    int ptr;
    ptr=strncmp(buf2,buf1,3);
    if(ptr>0)
        printf("buffer2 is greater than buffer1\n");
    else if(ptr<0)
        printf("buffer2 is less than buffer1\n");
    ptr=strncmp(buf2,buf3,3);
    if(ptr>0)
        printf("buffer2 is greater than buffer3\n");
    else if(ptr<0)
        printf("buffer2 is less than buffer3\n");
    return 0;
}

ouput:
buffer2 is greater than buffer1
buffer2 is less than buffer3

示例 2

#include
#include

int main()
{
	char str[][5]={"R2D2","C3PO","R2A6"};
	int n;
	puts("Looking for R2 as tromechdroids...");
	for(n=0;n<3;n++)
	{
		if(strncmp(str[n],"R2xx",2)==0)
		{
			printf("found%s\n",str[n]);
		}
	}
	return0;
}

ouput:
Looking for R2 as tromechdroids...
foundR2D2
foundR2A6

四、strcmp

描述

C 库函数 int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。

声明
下面是 strcmp() 函数的声明。

int strcmp(const char *str1, const char *str2)
参数
str1 – 要进行比较的第一个字符串。
str2 – 要进行比较的第二个字符串。
返回值
该函数返回值如下:

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

你可能感兴趣的:(C语言,c语言)