#include
#include
int TrimStrEnd(char * str);
int main()
{
char * str = "skllkslskeopapkpfaeoef\nljlj";
TrimStrEnd(str);
return 0;
}
int TrimStrEnd(char * str)
{
char * pS = strrchr(str, '\r');
if (pS)
*pS = 0;
else pS = strrchr(str, '\n');
if (pS)
*pS = 0;
else return 0;
return 1;
}
没怎么看懂这个TrimStrEnd实现什么功能,试着输了个字符串就在*pS = 0;报错了在请问这是什么原因
就是将一个字符串的末尾改成0,由于回车换行在不同的平台上可能有问题。
ps是一个char*,你让它去指向一个数值型的0,当然会报错,你可以
#include
#include
usingnamespacestd;
intTrimStrEnd(char*str);
intmain()
{
char*str="skllkslskeopapkpfaeoef\nljlj";
TrimStrEnd(str);
return0;
}
intTrimStrEnd(char*str)
{
char*pS=strrchr(str,'\r');//pS是一个空指针,因为str字符串中匹配不到\r
//if(pS==NULL)cout<<1;//由此判断克制pS为空
if(pS)
pS=0;//这里不会执行到建议改成pS="0"
elsepS=strrchr(str,'\n');//执行这里的时候,匹配\n,所以pS的值为ljlj
//cout<<pS;//可以看到pS的值
if(pS)//pS不为空
pS="0";//pS是个字符串,不是内存地址,所以用*pS是会报内存错误的,第二它是一个char不是int*
elsereturn0;
return1;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。