C语言学习NO.13-字符函数(三)-strncpy,strncat,strncmp长度受限制的字符串函数

这篇具有很好参考价值的文章主要介绍了C语言学习NO.13-字符函数(三)-strncpy,strncat,strncmp长度受限制的字符串函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

长度受限制的字符串函数介绍

一、strncpy函数的使用

(一)strncpy使用

strncmp长度不够怎么处理,c语言初阶知识,c语言,学习

strncmp长度不够怎么处理,c语言初阶知识,c语言,学习

#include <stdio.h>
#include <string.h>

int main()
{
	char arr1[20] = "asdfgdfv";
	char arr2[7] = "zxcvbn";

	strncpy(arr1, arr2, 4);
	printf("str0=%s\n", arr1);

	char* str1 = strncpy(arr1, arr2, 4);
	printf("str1=%s\n", arr1);

	char* str2 = strncpy(arr1, arr2, 6);
	printf("str2=%s\n", arr1);

	char* str3 = strncpy(arr1, arr2, 7);
	printf("str3=%s\n", arr1);

	char* str4 = strncpy(arr2, arr2, 6);
	printf("str4=%s\n", arr2);
  
	return 0;
}

strncmp长度不够怎么处理,c语言初阶知识,c语言,学习

/* STRNCPY.C */

#include <string.h>
#include <stdio.h>

void main(void)
{
	char string[100] = "Cats are nice usually";
	printf("Before: %s\n", string);
	strncpy(string, "Dogs", 4);
	strncpy(string + 9, "mean", 4);
	printf("After:  %s\n", string);
}

strncmp长度不够怎么处理,c语言初阶知识,c语言,学习

(二)strncpy使用的注意事项

•使用时需要包含头文件<string.h>

• 将源字符串的前num个字符复制到目标。如果源C字符串的末尾在复制num个字符之前找到'\0',剩下自动记0,直到总共写入了num个字符。

•拷贝num个字符从源字符串到目标空间。

•如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。

(三)strncpy的模拟实现

#include <stdio.h>
#include <assert.h>

char* my_strncpy(char* dest, char* src, int count)
{
	assert(dest && src);//注意  断言指针不是空指针
	char* ret = dest;
	while (count--)
	{
		*dest++ = *src++;
	}
	return ret;
}

int main()
{
	char string[100] = "Cats are nice usually";
	printf("Before: %s\n", string);
	my_strncpy(string, "Dogs", 4);
	my_strncpy(string + 9, "mean", 4);
	printf("After: %s\n", string);
	return 0;
}

strncmp长度不够怎么处理,c语言初阶知识,c语言,学习

二、strncat函数的使用

(一)strncat使用

strncmp长度不够怎么处理,c语言初阶知识,c语言,学习

strncmp长度不够怎么处理,c语言初阶知识,c语言,学习

#include <stdio.h>
#include <string.h>
//strncat
//附加字符
int main()
{
	char string1[100] = "You and I";
	strncat(string1, " together", 9);
	printf("%s\n", string1);

	char string2[100] = "You and I";
	strncat(string2, " study together", 6);
	printf("%s\n", string2);
	return 0;
}

strncmp长度不够怎么处理,c语言初阶知识,c语言,学习

/* STRNCAT.C */

#include <string.h>
#include <stdio.h>

void main( void )
{
   char string[80] = "This is the initial string!";
   char suffix[] = " extra text to add to the string...";
   /* Combine strings with no more than 19 characters of suffix: */
   /* 组合后缀不超过19个字符的字符串:*/
   printf( "Before: %s\n", string );
   strncat( string, suffix, 19 );
   printf( "After:  %s\n", string );
}

strncmp长度不够怎么处理,c语言初阶知识,c语言,学习

(二)strncat使用的注意事项

•使用时需要包含头文件<string.h>

• 将源的前num个字符追加到目标,再加上一个终止的null字符。

(将来源指向字符串的前号码个字符追加到目的地指向的字符串末尾,再追加一个 \0字 符)。

• 如果源中的C字符串的长度小于num,则只有终止之前的内容空字符被复制。(如果来源指向的字符串的长度小于号码的时候,只会将字符串中到\0的内容追加到目的地指向的字符串末尾)。

(三)strncat的模拟实现

#include <stdio.h>
#include <assert.h>

char* my_strncat(char* dest, char* src, int count)
{
	assert(dest && src);
	char* ret = dest;
	while (*dest)
	{
		dest++;
	}
	while (count--)
	{
		*dest++ = *src++;
	}
	return ret;
}

int main()
{
	char string[100] = "You and I";
	char suffix[] = " in the rain";
	printf("Before: %s\n",string);
	my_strncat(string, suffix, 12);
	printf("After: %s\n", string);
	return 0;
}

strncmp长度不够怎么处理,c语言初阶知识,c语言,学习

三、strncmp函数的使用

(一)strncmp使用

strncmp长度不够怎么处理,c语言初阶知识,c语言,学习

strncmp长度不够怎么处理,c语言初阶知识,c语言,学习

//strncmp
//作用是 比较字符串的大小

#include <stdio.h>
#include <string.h>
int main()
{
	char string1[] = "six";
	char string2[] = "seven";
	int len1 = strncmp(string1, string2, 3);
	printf("%d\n", len1);
	char string3[] = "six";
	char string4[] = "seven";
	int len2 = strncmp(string4, string3, 5);
	printf("%d\n", len2);

	return 0;
}

strncmp长度不够怎么处理,c语言初阶知识,c语言,学习

/* STRNCMP.C */
#include <string.h>
#include <stdio.h>

char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown fox jumps over the lazy dog";

void main(void)
{
    char tmp[20];
    int result;
    printf("Compare strings:\n\t\t%s\n\t\t%s\n\n", string1, string2);
    printf("Function:\tstrncmp (first 10 characters only)\n");

    result = strncmp(string1, string2, 10);//比较两个字符串的大小,考虑大小写
    if (result > 0)
        strcpy(tmp, "greater than");
    else if (result < 0)
        strcpy(tmp, "less than");
    else
        strcpy(tmp, "equal to");
    printf("Result:\t\tString 1 is %s string 2\n\n", tmp);
    printf("Function:\tstrnicmp _strnicmp (first 10 characters only)\n");

    result = _strnicmp(string1, string2, 10);//比较两个字符串的大小,不考虑大小写
    if (result > 0)
        strcpy(tmp, "greater than");
    else if (result < 0)
        strcpy(tmp, "less than");
    else
        strcpy(tmp, "equal to");
    printf("Result:\t\tString 1 is %s string 2\n\n", tmp);
}

strncmp长度不够怎么处理,c语言初阶知识,c语言,学习

(二)strncmp使用的注意事项

• 使用时,需要包含头文件<string.h>

• 比较字符串中对应的字符时,需要考虑到大小写(ASCII码值)

•返回值的规定:

    • 第一个字符串大于第二个字符串,则返回大于0的数字
    • 第一个字符串等于第二个字符串,则返回0
    • 第一个字符串小于第二个字符串,则返回小于0的数字

•对于比较的字符有大小限制,但比较出现结果后,就会提前结束

strncmp长度不够怎么处理,c语言初阶知识,c语言,学习

(三)strncmp的模拟实现

#include <stdio.h>
#include <assert.h>
#include <string.h>//strcpy 需要的头文件
int my_strncmp(const char* s1, const char* s2, int count)
{
	assert(s1 && s2);
	while (count--)
	{
		if(*s1 == *s2)
		{
			if (*s1 == '\0')
				return 0;
		}
		if (*s1 > *s2)
			return 1;
		else if(*s1 < *s2)
			return -1;
		s1++;
		s2++;
	}
}

int main()
{
	char string1[] = "The quick brown dog jumps over the lazy fox";
	char string2[] = "The QUICK brown fox jumps over the lazy dog";
	printf("Compare strings:\n\t\t%s\n\t\t%s\n\n", string1, string2);
	char tmp[100];
	int result = my_strncmp(string1, string2, 10);
	if (result > 0)
		strcpy(tmp, "greater than");
	else if (result < 0)
		strcpy(tmp, "less than");
	else
		strcpy(tmp, "equal than");
	printf("Result:\n\tString1 is %s string2\n",tmp);
	return 0;
}

strncmp长度不够怎么处理,c语言初阶知识,c语言,学习文章来源地址https://www.toymoban.com/news/detail-821680.html

到了这里,关于C语言学习NO.13-字符函数(三)-strncpy,strncat,strncmp长度受限制的字符串函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【【萌新的c语言学习13】】

    (对于上次c语言文件叙述的小型补充) 后续更新一个总结性质的文案 二进制输入 二进制输出 fread fwrite 二进制输出 文件 为什么这后面是乱码 因为我们是以二进制的形式存进去的 这样就能读出二进制的数据了 我们来考虑对通讯录的变种的考量 通讯录的内存文件是否也可以再

    2024年02月11日
    浏览(36)
  • 图数据库_Neo4j学习cypher语言_常用函数_关系函数_字符串函数_聚合函数_数据库备份_数据库恢复---Neo4j图数据库工作笔记0008

    然后再来看一些常用函数,和字符串函数,这里举个例子,然后其他的 类似   可以看到substring字符串截取函数   可以看到截取成功   聚合函数   这里用了一个count(n) 统计函数,可以看到效果   关系函数,我们用过就是id(r) 可以取出对应的r的id来这样..

    2024年02月12日
    浏览(59)
  • C语言学习:输入一行字符串,输出字符串中最长的单词。

    输入一行字符,编写一个函数,将此字符串中最长的单词输出。 代码示例如下: 一、输出字符串中第一个最长单词 测试结果:  二、输出字符串中所有最长单词 评论区指出上述程序不能输出同样最长的两个单词,修改后该程序能输出所有最长单词,即如果有多个同样最长的

    2024年02月05日
    浏览(57)
  • R语言学习——矩阵相关函数

    1.diag()函数  2.eigen()函数 3.svd()函数 4.qr()函数  5.dim()函数 6.nrow()函数 7.ncol()函数 8.cbind()函数与rbind()函数  9.as.vector()函数与as.matrix()函数 10.solve()函数 11.aperm()函数 12. apply()函数 (1)作用一:求矩阵对角线元素(返回值为一个向量) 结果展示  (2)作用二:把向量转化为对

    2024年02月07日
    浏览(38)
  • C语言sscanf函数学习

    sscanf()与scanf()相比,scanf()以键盘(stdin)为输入源,sscanf()以第一个参数的固定字符串为输入源; sscanf()的头文件是 #include stdio.h; 函数原型:  int sscanf (char *str, char * format [, argument, ...]); 函数功能:用于从字符串中读取指定格式的数据 函数参数:参数str为要读取数据的字符串

    2024年02月10日
    浏览(47)
  • C语言学习 使用函数求素数和

    题目描述 本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。 输入两个正整数m和n(1≤m≤n≤500),求m和n之间的素数和。 素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。 要求定义并调用函数prime(p)判断p是否为素数

    2024年02月03日
    浏览(47)
  • C语言-基础语法学习-1 函数

    当我们需要在C语言中传递一维数组作为函数的形参时,需要了解以下几个关键点: 函数声明和定义:在声明和定义函数时,我们可以使用以下方式指定一维数组作为形参: 或者 这两种方式都允许我们传递一个一维数组作为形参。 数组传递:在C语言中,数组传递实际上是通

    2024年02月12日
    浏览(53)
  • C语言strcat函数再学习

    之前学习了strcat函数;下面继续学习此函数; 它的功能描述是, 功能 把src所指向的字符串(包括“\\0”)复制到dest所指向的字符串后面(删除*dest原来末尾的“\\0”)。要保证*dest足够长,以容纳被复制进来的*src。*src中原有的字符不变。返回指向dest的指针。 说明 src和dest所

    2024年02月05日
    浏览(46)
  • 标准C库之strcpy,strncpy函数(拷贝C风格字符串、拷贝字符串,可指定拷贝长度)

    如果,想要深入的学习标准C库中strcpy,strncpy函数,还是需要去自己阅读Linux系统中的帮助文档。 具体输入命令: 即可查阅到完整的资料信息。 strcpy 函数是 C 语言标准库中的一个函数,它用于将一个字符串(C 语言中以字符数组表示的字符串)复制到另一个字符串。 strcpy 函

    2023年04月26日
    浏览(42)
  • R语言基本函数的学习(持续更新)

    目录 前言 Tidyverse包 arrange()函数 head()函数  filter()函数  select()函数

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包