C语言中如何截取字符串的前几个字符?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中如何截取字符串的前几个字符?相关的知识,希望对你有一定的参考价值。

自写的字符串截取程序,不懂可以继续问
系统里的截取前n个字符是strncpy
#include
#include
char
*mystrncpy(const
char
*string,int
n)//要求截取的字符串不可以改变,但指向字符串的指针可以改变

char
*p=string;

if(p==NULL)//如果截取的字符串是空的直接返回

return
NULL;

else

int
i=0;

while(*p!='\0')//循环直到达n个字符串终止

if(i==n)

break;



i++;

p++;



*(p++)='\0';//赋值结束字符串

return
string;


int
main()


char
str[50]="hello
world";

printf("%s\n",mystrncpy(str,3));

printf("Hello
world!\n");

return
0;
参考技术A 用指针加循环方式,如使指针指向字符串的首字符,读取一个,指针向后移动一位,循环次数由需要读取的字符数确定 参考技术B 我是使用MFC写的,
希望对你有帮助

CString
str
=
"cut
out
Cstring";

CString
str1;
//保存需要截取后的字符串变量

str1
=
str.left(4);
//
获得截取字符串str左边字符的长度

Messagebox(str1);
//验证是否正确
参考技术C 你将字符串a,b都事先初始化一遍。
应为你直接strncpy的,所以不能保证拷贝的字符串里面的结束符'\0'也被正常拷贝。
所以目标字符串b里面不一定有结束符。输出"%s"的时候就会把从b[0]开始的全部字符,直到遇见'\0'
参考技术D 方法没有错
问题在于
strncpy(b,a,6);
执行之后
没有在结尾处添加字符串结束标志

sql 从房间号中或从含有几个"-"间隔的字符串中,截取楼层数,或截取第几个"-"后的前几个字符或数字

代号(房间号)

代号

1-1-101

1-5-502

15-3-2001 

 

根据代号房间号截取后的楼层为

楼层

1

5

20

 

SELECT CASE WHEN len(RIGHT(代号, CHARINDEX(‘-‘, REVERSE(代号)) - 1))
      = 3 THEN LEFT(RIGHT(代号, CHARINDEX(‘-‘, REVERSE(代号)) - 1), 1)
      ELSE LEFT(RIGHT(代号, CHARINDEX(‘-‘, REVERSE(代号)) - 1), 2) END AS 楼层, *
FROM [00陶然台帐16]

 

RIGHT(代号, CHARINDEX(‘-‘, REVERSE(代号)) - 1) 为截取第三个也就是从右截取也就是最后一个‘-‘之后的字符串, 如果长度为3则截取第一个字符为楼层,如果长度为4则截取前2个字符为楼层。

 

 

 

 

 

    

 

以上是关于C语言中如何截取字符串的前几个字符?的主要内容,如果未能解决你的问题,请参考以下文章

sql 从房间号中或从含有几个"-"间隔的字符串中,截取楼层数,或截取第几个"-"后的前几个字符或数字

用mysql查询出字段中的前几个字

sql中如何在where字句里截取某个字段的前几位字符

sql 怎么取 字符串的前几位

c++怎么提取字符串的一部分

如何在shell脚本中取出一个字段的前几位?