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