我正在尝试创建一个程序,该程序从字符串中删除元音,将其添加到向量中,然后为用户提供再次使用原始代码的可能性。

在我的代码中,我有这个:

char s[20];


在我有了这个比较后不久:

for(j=0;j<tam;j++)
{
    if(strcmpi(s[j],"a")==1 ||
       (strcmpi(s[j],"e")==1 ||
       (strcmpi(s[j],"i") ==1||
       (strcmpi(s[j],"o") ==1||
       (strcmpi(s[j],"u")==1))
    {


因此,如果数组是char并且元音是char(“”),为什么编译器会给我这个错误?

[警告]传递'strcmpi'的arg 1使指针从整数开始而没有强制转换

编辑
正如有人说的那样,正确的是s [j] =='a',但这导致了错误的方式。如果放汽车,结果仍然是汽车。不知道为什么。

 if(s[j] == 'a' ||
    s[j] == 'A' ||
    s[j] == 'e' ||
    s[j] == 'E' ||
    s[j] == 'i' ||
    s[j] == 'I' ||
    s[j] == 'o' ||
    s[j] == 'O' ||
    s[j] == 'u' ||
    s[j] == 'U')
 {
    s[j] = s[j++]; }

最佳答案

Strcmpi用于比较字符串。当期望strcmpi时,char*的第一个参数为char类型。

为了比较单个字符,s[j]=='e'就足够了;如果您需要不区分大小写,则使用tolower(s[j])=='e'即可。您需要为ctype.h.包括tolower

关于c++ - 没有强制转换错误的strcmpi整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22336527/

10-11 16:31