c语言,怎样截取一个字符串的最后一个字符?

烦请给个简单的例子,谢谢!
2024-11-30 02:21:45
推荐回答(5个)
回答1:

这个原型声明没有问题,传递进去一个字符串,起始字符的位置,以及截取的长度。按照这个意思

来写最后是没有问题的。返回值为字符型指针可以在这个函数里面声明一个字符数组,最后将这个

字符数组返回。

#include "stdio.h"
#include "string.h"
main()
{
char* p ="abcdefg";
int len = strlen(p);
char* t = &p[len-1];
printf("%c\n",*t);
}

回答2:

2维数组在内存中仍是连续的存储单元
你出现那样的原因是因为 长度超出数组2维长度
越界从而将前面的数据覆盖而导致
画了个示意图如下
------
1 "this is 1" 串首地址
------
2
------
......
------
10
------
11 \0而这里是存放This is 33 首字符的区域,但却被\0占据(第一个串).存第二个串的时候\0被覆盖
------
2
------
3
------
......
------
10
------
11 \0 而这里是存放This is a 2 首字符的区域 却被\0占据 存 第3个串的时候\0又被覆盖
------
2
------
......
------
\0 所以这里才是真正的结束位置,但这里也越界了 。
------
所以你测试输出 array[0]array[1]array[2]结果分别是如下,就是因为\0的原因
This is 1This is 33 This is a 2
This is 33 This is a 2
This is a 2
所以在调用 strrchr“ 查找串中最后一个' '的 位置”
这个串其实是 This is 1This is 33 This is a 2\0
所以输出的是3个2而不是你期望的结果 1 33 2
只要改变下数组合的范围为串的长度就可以了。

char array[3][11]; 改变二维长度 或者缩小串长度

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!

回答3:

//关键使用strlen函数先求出字符串的长度,再减一
#include
#include
void main()
{
char *str="abcdefg";//可以输入的,用scanf函数
int l;
l=strlen(str);
printf("%c",str[l-1]);//这个str[l-1]元素,就是该字符串最后那个
}

回答4:

很简单啊,直接传换成char数组,然后当作数组一样操作,如果你要把数字和字母分开,判断一下ascii码就行

回答5:

#include "stdio.h"
#include "string.h"
main()
{
char* p ="abcdefg";
int len = strlen(p);
char* t = &p[len-1];
printf("%c\n",*t);
}