段错误,求大家指点,程序代码如下

C语言 码拜 9年前 (2016-05-21) 969次浏览
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void reverseMy(char *p);
void reverseMy(char *p)
{
	char *t = p + strlen(p) - 1;
	char c;
	for (; p < t; p++, t--)
	{
		c = *p;
		*p = *t;
		*t = c;
	}
}
int main(void){
	char s[100];
	char *p = s;
	p = "Lenovo";
	reverseMy(p);
	printf("%s\n", p);
	return 0;
}
解决方案

30

p指向的是常量区的字符串(p = “Lenovo”;)
所以你不应该在reverseMy中修改该字符串
假如需要复制字符串到s中,使用strcpy

50

p = “Lenovo”;这样的写法,表示p指向的是常量字符串,一般是禁止进行写操作,要改成在堆栈上的字符串才行。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void reverseMy(char *p);
void reverseMy(char *p)
{
	char *t = p + strlen(p) - 1;
	char c;
	for (; p < t; p++, t--)
	{
		c = *p;
		*p = *t;
		*t = c;
	}
}
int main(void){
	char s[100];
	char *p = s;
	strcpy(p, "Lenovo");
	reverseMy(p);
	printf("%s\n", p);
	return 0;
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明段错误,求大家指点,程序代码如下
喜欢 (0)
[1034331897@qq.com]
分享 (0)