错误:无法将参数"1"的"char*"转换为"char**"到"int upper(char**)"
Error: cannot convert 'char*' to 'char**' for argument '1' to 'int upper(char**)'
我有一个任务来计算数组中元音,大写字母,辅音等的数量。但是我一直得到错误:
错误无法将参数'1'转换为'char** '"int上层(char * *)"
我不知道为什么我得到这个错误。
主程序:
#include "stringCount.h"
using namespace std;
int main()
{
const int SIZE = 1024; // The maximum size of the C-string
char cstring[SIZE];
char choice;
cout << "Enter a C-string of at most 1024 characters: ";
cin.getline(cstring, SIZE); //Get a c-string
// Display the Menu
do
{
cout << "tA) Count the number of vowels in the stringn";
cout << "tB) Count the number of consonants in the stringn";
cout << "tC) Count the number of uppercase alphabets in the stringn";
cout << "tD) Count the number of lowercase alphabets in the stringn";
cout << "tE) Count the number of alphabets in the stringn";
cout << "tF) Count the number of digits in the stringn";
cout << "tG) Find the average number character in each word of the stringn";
cout << "tH) Display the string with first letter of words capitalizedn";
cout << "tI) Enter a new string stringn";
cout << "tQ) Quit this programnn";
cout << "tEnter your choice (A - I) or Q: ";
cin >> choice;
while ((toupper(choice) < 'A' || toupper(choice) > 'I') && toupper(choice)!='Q')
{
cout << "tEnter ONLY (A - I) or Q: ";
cin >> choice;
}
// Process User's choice
switch (toupper(choice))
{
case 'A': cout << "The string has " << vowel(cstring) << " vowels." << endl;
break;
case 'B': cout << "The string has " << consonant(cstring) << " consonants." << endl;
break;
case 'C': cout << "There are " << upper(cstring) << " uppercase alphabets in the string." << endl;
break;
case 'D': cout << "There are " << lower(cstring) << " lowercase alphabets in the string." << endl;
break;
case 'E': cout << "There are " << alphabet(cstring) << " alphabets in the string." << endl;
break;
case 'F': cout << "There are " << digit(cstring) << " digits in the string." << endl;
break;
case 'G': cout << "There average number of letters per word in the string is " << wordCount(cstring) << "." << endl;
break;
case 'H': cout << "The capitalized string is: " << endl;
capital(cstring);
cout << cstring << endl;
break;
case 'I': cin.get();
cout << "Enter a C-string of at most 1024 characters: ";
cin.getline(cstring, SIZE);
break;
case 'Q': cout << "Goodbye!n";
exit(EXIT_SUCCESS);
}
} while (toupper(choice) != 'Q');
return 0;}
My header file:
#ifndef STRING_COUNT
#define STRING_COUNT
#include <iostream>
#include <cstdlib>
double wordCount(char *[]);
void capital(char *[]);
int vowel(char *[]);
int consonant(char *[]);
int upper(char *[]);
int lower(char *[]);
int alphabet(char *[]);
int digit(char *[]);
#endif
我的实现文件:
#include <iostream>
#include <cstdlib>
#include <cstring>
#include "stringCount.h"
double wordCount(char*words)
{
int a, size, word=0 ;
size = sizeof (words);
for (a=0 ; a < size ; a++)
{
if (isspace(words[a]))
{
word++;
}
}
return word+1;
}
//======================================================================
void capital(char * words)
{
int i, size ;
size = sizeof (words);
for (i=0 ; i < size ; i++)
{
if (isspace(words[i])&& isalpha(words[i+1]) )
{
words[i+1] = toupper(words[i+1]);
i++;
}
}
}
//=====================================================================
int vowel(char * words)
{
int a =0;
int size, vowels=0 ;
size = sizeof(words);
for (a=0; a< size; a++)
{
if( words[a]== 'a'|| words[a] == 'e' || words[a]== 'i' || words[a] == 'o' || words[a] == 'u' ||words[a]== 'A'|| words[a] == 'E' || words[a]== 'I' || words[a] == 'O' || words[a] == 'U')
{
vowels++;
}
}
return vowels;
}
//=====================================================================
int consonant(char * words)
{
int i, size, cons =0;
size = sizeof(words);
for (i = 0; i< size ; i++)
{
if (isalpha(words[i])&!( words[i]== 'a'|| words[i] == 'e' || words[i]== 'i' || words[i] == 'o' || words[i] == 'u' ||words[i]== 'A'|| words[i] == 'E' || words[i]== 'I' || words[i] == 'O' || words[i] == 'U'))
{
cons++ ;
}
} ;
return cons;
}
//====================================================================
int upper(char * words)
{
int i, size, uppercase =0 ;
size = sizeof(words);
for (i = 0 ; i< size ; i++)
{
if (isupper(words[i]))
{
uppercase++;
}
}
return uppercase;
}
//===============================================================
int lower(char * words)
{
int i, size, lowercase =0 ;
size = sizeof(words);
for (i = 0 ; i< size ; i++)
{
if (islower(words[i]))
{
lowercase++;
}
}
return lowercase;
}
//================================================================
int alphabet(char * words)
{
int alphab =0;
int i, size;
size = sizeof(words);
for (i = 0; i< size ; i++)
{
if (isalpha(words[i]))
{
alphab++ ;
}
}
return alphab;
}
//=================================================================
int digit(char * words)
{
int a, size, digi =0;
size = sizeof(words);
for (a=0 ; a < size ; a++)
{
if(isdigit(words[a]))
{
digi ++;
}
}
return digi ;
}
//=====================================================================
修改函数声明
int upper(char *[]);
int upper(char *);
甚至
int upper( const char * );
考虑函数定义也是错误的
不是 size = sizeof(words);
必须使用
size = strlen(words);
对其他函数定义同样有效。
函数可以如下方式定义
int upper( const char * words )
{
int uppercase = 0 ;
for ( const char *p = words; *p != ' '; ++p )
{
if ( isupper( ( unsigned char )*p ) ) ++uppercase;
}
return uppercase;
}
相关文章:
- 将无符号char*转换为std::istream*C++
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 将函数参数"const char*"转换为"std::string_view"是
- C ++如何在使用"tolower"时将char转换为int
- 有没有办法在C++的赋值中将"char**"转换为"double"?
- JavaCPP 错误:无法将参数"1"的"char*"转换为"Abc*
- 为什么从 char 转换为 std::byte 可能是未定义的行为?
- 如何在虚幻引擎4中将char*转换为TCHAR?
- C++:将模板类型 char 转换为 std::string
- strcmp/char* 转换无法按预期工作
- C++中的SQLite char*转换
- 无法从 const char* 转换为 const char *&
- 在 C++ 中将 char 转换为 int,而无需符号位传播
- 如果必须包含西里尔字符,如何将 char* 转换为 std::string?
- 试图使用strCMP时的char转换错误
- 无法从'const char *'转换为'LPCTSTR'
- 将 std::vector<char> 转换为字符* 会导致字符缺陷
- 使用 static_cast 将 char 转换为 int c++
- 如何在 C++(MFC) 中将 char* 转换为 LPCTSTR
- 无法将const char转换为字符串构造字符串