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

烦请给个简单的例子,谢谢!... 烦请给个简单的例子,谢谢! 展开
 我来答
靠谱的星爷xy
2018-04-09 · TA获得超过2.5万个赞
知道小有建树答主
回答量:49
采纳率:100%
帮助的人:8574
展开全部

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

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

字符数组返回。

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

陈学阳
2010-09-13 · TA获得超过2.8万个赞
知道大有可为答主
回答量:2.1万
采纳率:14%
帮助的人:5719万
展开全部
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]; 改变二维长度 或者缩小串长度

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
E网E友
2010-09-13 · TA获得超过1832个赞
知道小有建树答主
回答量:1422
采纳率:0%
帮助的人:1925万
展开全部
//关键使用strlen函数先求出字符串的长度,再减一
#include <stdio.h>
#include <string.h>
void main()
{
char *str="abcdefg";//可以输入的,用scanf函数
int l;
l=strlen(str);
printf("%c",str[l-1]);//这个str[l-1]元素,就是该字符串最后那个
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
东方雨西
2010-09-13 · TA获得超过7742个赞
知道小有建树答主
回答量:1097
采纳率:0%
帮助的人:2112万
展开全部
很简单啊,直接传换成char数组,然后当作数组一样操作,如果你要把数字和字母分开,判断一下ascii码就行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
490749157
推荐于2018-03-09 · TA获得超过738个赞
知道小有建树答主
回答量:276
采纳率:100%
帮助的人:341万
展开全部
#include "stdio.h"
#include "string.h"
main()
{
char* p ="abcdefg";
int len = strlen(p);
char* t = &p[len-1];
printf("%c\n",*t);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式