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语言中如何截取字符串的前几个字符?的主要内容,如果未能解决你的问题,请参考以下文章