永发信息网

C语言找错

答案:4  悬赏:80  手机版
解决时间 2021-03-04 20:55
  • 提问者网友:半生酒醒
  • 2021-03-04 09:41
void test3(char* str1)
{
char string[10];
if(strlen(str1)<=10)
{
strcpy(string, str1);
}
}
看卡程序有什么错误。
这到题答案说是越界,可是那里越界呢?
如果我的str1的有效长度小于10的话,是不是就可以,比如说str1="abc";这样应该没有问题吧?
如果str1 的有效长度大于10那就肯定有问题了.
但是我想知道的是,这个程序到底那里出问题了.
最佳答案
  • 五星知识达人网友:未来江山和你
  • 2021-03-04 09:55
程序本身只有点小问题,至于不能达到你的要求,你没有说你要做什么,我也不知道了

void test3(char* str1)
{
char string[10];
if(strlen(str1)<=10) //这里有点问题,应该用if(strlen(str1)<10),因为strcpy会拷贝'\0',可能有隐患
{
strcpy(string, str1);
printf("string[] = %s\n",string);//打印看看,拷贝成功
}
else
{
printf("原字符串太长\n");//给点反馈信息
}
}
全部回答
  • 1楼网友:动情书生
  • 2021-03-04 14:00
#include<stdio.h> main( ) {  int cocks,hens,chicks; cocks=0; while(cocks<=19)   {   chicks=0;   while(chicks<=100)     {     hens=100-cocks-chicks; //这里相减时可能会负数    if(hens>=0&&5*cocks+3*hens+chicks/3==100) //所以在这里判断一下hens  printf("%8d,%8d,%8d\n",cocks,hens,chicks);     chicks=chicks+3;     }   cocks=cocks+1;   } return 0; }
  • 2楼网友:孤独入客枕
  • 2021-03-04 12:32
str1被你定义成指针型了,我觉得应该定义成数组吧,因为是形参,所以可以不固定大小,直接char str1[].因为你没有给出完整的程序,我也不确定对不对,你调试一下吧。
  • 3楼网友:雪起风沙痕
  • 2021-03-04 11:20
strcpy函数,第二个参数必须是以空字符结尾的字符串,才能正常运行 既然有错,那应该是调用void test3(char* str1)这个函数的实参是个字符数组吧,字符数组不一定以空字符结尾
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯