任何人都可以帮我这个代码吗?

时间:2017-09-13 19:01:18

标签: c pointers

我认为我的逻辑是正确的,但它不打印任何东西。代码是从字符串中消除元音然后显示它。

 #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(); 
   } 

2 个答案:

答案 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';