请教,下面的代码为什么会发生段错误?
答案:2 悬赏:30 手机版
解决时间 2021-02-18 10:37
- 提问者网友:呐年旧曙光
- 2021-02-18 04:32
#include
#include
int main()
{
char *p[2];
sprintf(p[1],"%s", "aaaaaaaaaa");
printf(p[1]);
return 0;
}
如果把sprintf(p[1],"%s", "aaaaaaaaaa");
换成
sprintf(p[0],"%s", "aaaaaaaaaa");
把
printf(p[1]);
换成
printf(p[0]);
程序就可以正确运行。为什么会这样?
最佳答案
- 五星知识达人网友:一叶十三刺
- 2021-02-18 04:43
知道你最后这两个吗?
*(p1+i)='\0';
*(p2+i)='\0';
明显错了.越界了.并不能付值.这不是一个数组.要区分.
只有4个字节的指针.
还有一个最严重的错误:
char *str1="abcdefg";
char *str2="hijklmn";
是指向常字符串的指针....
不可能改字符串的内容的.多注意C
你这个直接交换个指针就行了.
ASSERT(str2);
char *pszTemp = NULL;
pszTemp = str2;
str2 = str1;
str1 = pszTemp;
以前华为的经典面试题有个strcpy函数的写法的,对内存操作比较关注.
看看去吧.
全部回答
- 1楼网友:天凉才是好个秋
- 2021-02-18 05:22
<%if session("check")="wrong" then response.write "
密码错误" end if%>
改为
<%if session("check")="wrong" then response.write "
密码错误" %>
不能有双引号
后面也不需要end if
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯