c语言程序错误求解,急,谢谢
解决时间 2021-04-21 13:10
- 提问者网友:無理詩人
- 2021-04-20 21:17
为什么会出现这样的问题?我的程序如下:
#include"string.h"
#include "stdio.h"
char*dyy(char*a,char*b)
{
char*head1,*head2,*head,*tail;
head1=a,head2=b,head=b,tail=a+strlen(a)-1;
while(head1<=tail)
{
if(*head1!='a'&&*head1!='e'&&*head1!='i'&&*head1!='o'&&*head1!='u'&&*head1!='A'&&*head1!='E'&&*head1!='I'&&*head1!='O'&&*head1!='U')
head1++;
else
*head2=*head1,head2++,head1++;
}
return head;
}
void main()
{
char a[255],b[255];
printf("请输入一个字符串:");
scanf("%s",a);
dyy(a,b);
printf("%s\n",b);
}
最佳答案
- 五星知识达人网友:荒野風
- 2021-04-20 22:38
void main()中定义:char b[255] = ""; 你需要清空内存,建议使用memset(b,0,255);
全部回答
- 1楼网友:酒醒三更
- 2021-04-21 03:42
按照第一位说的,把,换成;
*head2=*head1,head2++,head1++;
这句还要用{}把它作为块,才符合你的意图。
#include"string.h"
#include "stdio.h"
char*dyy(char*a,char*b)
{
char*head1,*head2,*head,*tail;
head1=a;head2=b;head=b;tail=a+strlen(a)-1;
while(head1<=tail)
{
if(*head1!='a'&&*head1!='e'&&*head1!='i'&&*head1!='o'&&*head1!='u'&&*head1!='A'&&*head1!='E'&&*head1!='I'&&*head1!='O'&&*head1!='U')
head1++;
else
{*head2=*head1;head2++;head1++;}
}
return head;
}
void main()
{
char a[255],b[255];
printf("请输入一个字符串:");
scanf("%s",a);
dyy(a,b);
printf("%s\n",b);
}
- 2楼网友:独行浪子会拥风
- 2021-04-21 02:03
你在dyy函数中使用了两个逗号表达式,这个表达式本身没有问题,问题是它的执行顺序,不同的编译器对它其中各个表达式的执行书序可能是不同的,建议你把逗号表达式全改为程序语句,另外,给第二个逗号表达式加上{ }(改成语句后),以保证他们在else后可都被执行
- 3楼网友:神鬼未生
- 2021-04-21 01:08
head1=a,head2=b,head=b,tail=a+strlen(a)-1;
除了变量声明,表达式中不能有逗号,上面的逗号都要改成分号。其他语句类同。
- 4楼网友:一叶十三刺
- 2021-04-20 23:41
指针的东西记不太清楚了。
可能是你改动了指向b的指针head2的位置(head2++)的时候,b的位置也变化了。
试试在return之前,把原先保存的head的位置,再付给b(b=head)。
另外,可以在代码中增加print语句的方式,或者单步执行的方式检查程序,也许能比在网上问能更快解决问题。
我要举报
大家都在看
推荐资讯