c语言用指针ab赋值互换,c语言使用指针来赋值的问题

本文介绍如何在C语言中实现一个去除字符串右侧空格和制表符的trim_right函数,并指出将''赋值给常量字符串引发的错误。作者提供了正确修改后的代码示例,强调了对动态内存和常量区的理解区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个程序是用来去掉字符串右边的空格和制表符的

思路是从右边扫描,遇到空格和制表符就向前移一位,直到扫描到字符为止,在把这个字符的后一位置\0,然后返回。

问题是我使用*(in_str+length)='\0';来赋值的时候,编译无错,执行到这句的时候出错,不知道是什么原因。

代码:

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

char* strs_TrimRight(char*);

void main()

{

char *str="asfda ";

strs_TrimRight(str);

}

char* strs_TrimRight(char* in_str)

{

if(in_str==NULL)

{

printf("in_str is NULL");

exit(-1);

}

int length=strlen(in_str);

while(*(in_str+length-1)==' '||*(in_str+length-1)=='\t')

{

length--;

}

*(in_str+length)='\0';

//in_str[length]='\0';

return in_str;

}

源文档 <>

char *str="asfda "; //这里str所指的是常量,你要赋值给它当然会出现非法访问的错误,

改成char str[]="asfda "; 就不会出错了

源文档 <>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值