我认为我的逻辑是正确的,但它不打印任何东西。代码是从字符串中消除元音然后显示它。
#include<stdio.h>
#include<conio.h>
void main()
{
char *str="shivank";
int i,len;
char *q;
clrscr();
len=strlen(str);
for(i=0;i<=len;i++)
{
if((*str=='a')||(*str=='e')||(*str=='i')||(*str=='o')||(*str=='u'))
str++;
else if(*str=='\0')
break;
else
{
*q=*str;
str++;
q++;
}
}
*q='\0';
puts(q);
getch();
}
答案 0 :(得分:0)
如果我理解正确,您希望将"shivank"
转换为"shvnk"
,并将其存储在单独的字符串中以便稍后打印。
你必须在某个地方分配这个内存。只使用指针将无法完成工作 - 最好的情况是,您可以将str
更改为指向字符串的不同开头:"hivank"
,"ivank"
,{{1}等等......都可以使用指针算术,但这就是它。
我建议您使用"vank"
数组而不是使用字符串常量:
char
使用数组的好处是你可以修改它们,如下例所示:
char str[] = "shivank";
char modified_str[10]; // enough memory to store the modified string
(这只是将modified_str[0] = str[0];
的第一个字母复制到str
的第一个字母的示例
然后,您可以逐个阅读modified_str
字符串中的字符,并仅将非元音复制到str
。不要忘记以'\ 0'结束modified_str
。
答案 1 :(得分:-1)
试试这个
else
{
*q=*str;
puts(q);
str++;
q++;
}
}
*q='\0';