2 u010132497 u010132497 于 2016.05.11 21:44 提问

这个程序运行一下为什么提示exe已停止工作?

#include

void strcpy(char *,char *,int);

int main()
{
char *s = "1245";
char *t = "3123";

strcpy(s,t,3);
printf("%s\n",s);
return 0;

}
//函数strcpy(s,t,n)将t中UI多前n个字符复试到s中
void strcpy(char *s,char *t,int n)
{
while( n-- && *t )
*s++ = *t++ ;
*s = '\0';
}

2个回答

qq423399099
qq423399099   Ds   Rxr 2016.05.11 22:02
已采纳

char *s = "1245";这样的写法,表示s指向常量区的一个常量字符串"1245",该区域是不允许进行写操作的
改成char s[5] = "1245";就行了

 #include<stdio.h>
void strcpy(char *,char *,int);
int main()
{
    char s[5] = "1245";
    char *t = "3123";
    strcpy(s,t,3);
    printf("%s\n",s);
    return 0;
}
//函数strcpy(s,t,n)将t中UI多前n个字符复试到s中
void strcpy(char *s,char *t,int n)
{
    while( n-- && *t )
        *s++ = *t++ ;
    *s = '\0';
}
u010132497
u010132497 谢谢你。你的回答真是让我柳暗花明,豁然开朗
一年多之前 回复
wll1228
wll1228   2016.05.11 22:24

char *s="12345",左边的字符指针在栈中的变量。右侧的字符串常量是放在存储区的,是只允许读,不允许写的。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!