我正在尝试一些东西......但我无法理解结果
#include<stdio.h>
#include<conio.h>
char *remove_vowels_string(char *p);
void main()
{
clrscr();
char str[77],*getString;
gets(str);
getString=remove_vowels_string(str);
puts("\n");
puts(getString);
getch();
}
char *remove_vowels_string(char *p)
{
char *q;
q=p;
while(*p)
{
if(*p=='a' || *p=='e' || *p=='i' || *p=='o' || *p=='u')
{
for(int i=0;*(p+i)!='\o';i++)
// printf(" as %d",i);
{
*q=*(p+i);
*(p+i)=*(p+i+1);
if(*(p+i+1)=='\o')
break;
*(p+i+1)=*q;
}
printf("\n%c\n",*p);
*(p+i+1)='\o';
}
p++;
}
puts(p);
return p;
}
我想向前移动每个值,并用空指针替换元音字符。但该程序不起作用。请告诉我哪里出错了以及为什么出错。
最佳答案
\o
与 \0
不同。 \o
将被视为 o
。 Reference
for(int i=0;*(p+i)!='\o';i++)
应该是
for(int i=0;*(p+i)!='\0';i++)
^
This is the null character
同样,
if(*(p+i+1)=='\o')
应该是
if(*(p+i+1)=='\0')
和
*(p+i+1)='\o';
应该是
*(p+i+1)='\0';
另请注意,您应该使用
int main()
{
// your code
return 0;
}
而不是void main()
关于c - 交换 char 指针的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29826515/