截取字符串的3种方法

截取字符串的3种方法注 格式化说明符 s 表示输出 个字符 的值由后面的变量 n 指定 这样表示就可以输出不固定的字符个数

大家好,欢迎来到IT知识分享网。

一、截取字符串的实现

在C语言中,没有直接截取字符串的库函数,但是咱们可以借助其他函数实现这个功能。

1.最简单的方法

如果只是直接输出一个字符串的子串,只需要一个简单的printf函数即可。

#include <stdio.h> int main() { char s[]="Hello World!"; int n=5; //从索引s+6开始,输出n个字符 printf("%.*s\n", n, s+6); return 0; }

程序输出:World

注:格式化说明符%.*s表示输出*个字符,*的值由后面的变量n指定,这样表示就可以输出不固定的字符个数。完整形式为%m.ns,表示打印字符宽度为m,字符个数为n,如printf(“%3.1s\n”,s)会输出两个空格1个H。

注意宽度m不是限宽,而是最小宽度。就像停车场上的停车位一样,不是只有m个停车位,而是只画了m个停车位。

截取字符串的3种方法

也就是说,当n<m时,前面补空格,当n>m时,会正常输出n个字符(不会被截断)。这个特性和浮点数的输出宽度和小数位数规律完全一样。

printf(“%s”, “good”)

g

o

o

d

printf(“%5s”, “good”)

g

o

o

d

printf(“%.2s”, “good”)

g

o

printf(“%3.2s”, “good”)

g

o

printf(“%4.2s”, “good”)

g

o

printf(“%1.2s”, “good”)

g

o

2.利用strncpy函数

strncpy定义在 <string.h> 头文件中,功能是将一个字符串(包括终止的空字符)从源字符串复制到目标字符串。与strcpy不同的是,它可以指定复制字符的数量(中间有个字母n就表示要复制n个)。

函数的原型:

char *strncpy(char *dest, const char *src, size_t n);

参数说明:

dest:指向目标字符串的指针,即你要将源字符串复制到的位置。

src:指向源字符串的指针,即你要从中复制字符串的位置。

n:要复制的字符的最大数量。

返回值:

strncpy 函数返回目标字符串 dest 的指针。

代码如下:

#include <stdio.h> #include <string.h> void substring(char *src, char *dest, int start, int length) { if (start < 0 || length <= 0 || start + length > strlen(src)) { printf("Invalid parameters!\n"); return; } // 使用strncpy函数复制子字符串到目标字符串 strncpy(dest, src + start, length); // 在目标字符串的末尾添加空字符 dest[length] = '\0'; } int main() { char src[] = "Hello, World!"; char dest[10]; // 截取从索引7开始的8个字符 substring(src, dest, 7, 5); printf("%s\n", dest); return 0; }

3.自编代码

其实strncpy实现起来非常简单,完全可以自己写,只需要将要截取的元素逐个赋值到目标数组即可。可将上面的那行strncpy代码替换如下:

for(int i=0; i<length; i++){ dest[i]=src[i+start]; }

二、截取字符串的应有案例

搞一个截取字符串的简单应用案例:“名言生成器”。

咱们都知道这样一句名言:

截取字符串的3种方法

还有一句躺平人的心声:

截取字符串的3种方法

咱们可以把这两句话进行截取重拼来搞搞新意思,代码如下:

#include <stdio.h> int main() { char s1[]="生如夏花之绚烂,死如秋叶之静美。"; char s2[]="打工可能累死!玩命可能猝死!躺平最多饿死!"; printf("%.26s", s1); printf("%.4s。\n", s2+28); return 0; }

猜猜会输出什么结果?

注:实际测试,一个中文字符相当于两个英文字符,所以格式化输出时参数值相对于纯英文要翻倍。

当然了,这只是个最简单的应用案例。如果我们从大量的名人名言中随机截取片段,然后将它们重新组合成全新的句子,在有人工智能算法的加持下,就可能产生一些非常好玩的句子。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/122905.html

(0)
上一篇 2025-10-13 09:33
下一篇 2025-10-13 10:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信