永发信息网

函数 fun 的功能是: 将 s 所指字符串中除了下标为奇数、同时 ASCII 值也为奇数的字符之外,

答案:1  悬赏:50  手机版
解决时间 2021-03-26 14:07
  • 提问者网友:無理詩人
  • 2021-03-26 01:35
函数 fun 的功能是: 将 s 所指字符串中除了下标为奇数、同时 ASCII 值也为奇数的字符之外,
最佳答案
  • 五星知识达人网友:酒醒三更
  • 2021-03-26 01:50
你打印不出结果的原因是func函数里for循环里i递增停不下来,并且使得形参s和t也越界了
for(i=0;i>=0;i++)
{
int j=0;
while(s[i]%2==1&&i%2==1)
{
t[j]=s[i];
j++;
}
}
你的i超过了100后,s[i]和t[j]就超过了你原本分配的内存,指针越界了追问
void fun(char *s,char t[])

{ int l=strlen(s);
int i,j;
for(i=0;i{
int j=0;
if((int)s[i]%2==1&&i%2==1)
{
t[j]=s[i];
j++;
}
}t[j]='';
}
我的fun函数改成这样还是打印不出来,而且出现程序崩溃。
追答我这里调试不了,你把以下函数的l打印出来,并在fun函数的结尾打印一个log,如printf("fun end\n");来按指示fun函数跑到结尾没有
void fun(char *s,char t[])

{
int l=strlen(s);
int i,j;
for(i=0;i {
int j=0;
if((int)s[i]%2==1&&i%2==1)
{
t[j]=s[i];
j++;
}
}
t[j]='\0';
}追问这个程序要求只能在fun函数里面做出来,不能编辑其他的部分程序,我不知道为什么跑不出来。难道while用错了。。。。追答我刚才帮你运行了下fun函数,修改如下

void fun(char *s,char t[])
{
int l=strlen(s);
int i,j=0;
for(i=0;i {
//int j=0;
if((int)s[i]%2==1&&i%2==1)
{
t[j]=s[i];
j++;
}
}
t[j]='\0';
}追问为什么注释掉int j=0;之后就好了呢?表示不是很理解,还请指点,谢谢你了。
int j=0;
while(s[i]%2==1&&i%2==1)
{
t[j]=s[i];
j++;
}这段程序不知道为什么会出错,跟局部变量有关是吗,还是有些不是很清楚,不过比之前懂了很多。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯