开发者社区> 问答> 正文

C++有关字符串小程序指针赋值时,报错 ?报错

#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;报错了在请问这是什么原因

展开
收起
爱吃鱼的程序员 2020-06-23 16:12:53 579 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    就是将一个字符串的末尾改成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;
    }

    2020-06-23 16:13:11
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载