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

函数fun的功能是:将s所指字符串中除了下标为奇数,同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成一个新串放在所指的数组中。程序为什么验证不... 函数fun的功能是:将s所指字符串中除了下标为奇数,同时ASCII值也为奇数的字符之外,其余的所有字符
都删除,串中剩余字符所形成一个新串放在所指的数组中。
程序为什么验证不出错,但是编译没有结果,还有运行时会崩溃,本人win7 32位,软件visual c++6.0

程序如下,还希望详细解答;

#include<stdio.h>
#include<string.h>
void fun(char *s,char t[])
{ int i,j;
for(i=0;i>=0;i++)
{
int j=0;
while(s[i]%2==1&&i%2==1)
{
t[j]=s[i];
j++;
}
}
}
main()
{
char s[100],t[100]; void NONO();
printf("\nPlease enter String S:");
scanf("%s",s);
fun(s,t);
printf("\n The result is : %s\n",t);
NONO();
}
void NONO()
{
/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
char s[100],t[100];
FILE *rf,*wf;
int i;
rf=fopen("c:\\KSWJJ\\2444310002220594\\in.dat","r");
wf=fopen("c:\\KSWJJ\\2444310002220594\\out.dat","w");
for(i=0;i<10;i++){
fscanf(rf,"%s",s);
fun(s,t);
fprintf(wf,"%s\n",t);
}
fclose(rf);
fclose(wf);
}
展开
 我来答
huangxinzbz
2015-12-07 · TA获得超过589个赞
知道小有建树答主
回答量:266
采纳率:100%
帮助的人:336万
展开全部
你打印不出结果的原因是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<l;i++)

{

int j=0;

if((int)s[i]%2==1&&i%2==1)

{

t[j]=s[i];

j++;

}

}t[j]='\0';

}

我的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<l;i++)
{
int j=0;
if((int)s[i]%2==1&&i%2==1)
{
t[j]=s[i];
j++;
}
}
t[j]='\0';
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式