我试图在 C 中创建一个函数来打印 char 变量的内容。
这是我的函数本身的代码:
void printChar(char ChArr[])
{
int iCharLen = sizeof(ChArr); // define ChArr[] length
int i;
for(i = 0; i<iCharLen; i++)
{
printf("%c",ChArr[i]);
}
}
这是“int main()”的代码:
int main()
{
char ChAr[] = "A very long char!!!!";
printChar(ChAr[]);
return 0;
}
我得到的错误是:“错误:‘]’标记前的预期表达式”
错误是我调用 printChar() 的行。
注意:此代码仅适用于 C。
最佳答案
当你声明时:
char ChAr[] = "A very long char!!!!";
默认大小 ChAr[]
array 是您在数组的定义/初始化中使用的字符串的大小。
之后,在任何表达式中 ChAr[]
无效,您必须在 []
内提供一些索引值;这就是您收到类似错误的原因:
"error: expected expression before ']' token"
意思是,在函数调用中:
printChar(ChAr[]);
^ before ] you are missing some index value
另外,即使你称它为printChar(ChAr[i]);
它不会编译(不正确)并且会给出类型不匹配错误。根据下面的函数声明:
void printChar(char ChArr[]){
^ you need an char*
你应该这样调用这个函数:
printChar(ChAr);
因为 ChAr
的类型是char[N]
这是什么函数printChar
接受作为参数。
函数中的下一个错误 printChar()
是使用 sizeof
评估字符串的长度运算符(operator)错误;使用 strlen()
而不是 sizeof
运算符(operator)。这意味着:
int iCharLen = sizeof(ChArr); // define ChArr[] length
应该是:
int iCharLen = strlen(ChArr); // define ChArr[] length
别忘了 #include <string.h>
.
记得在函数声明中char ChArr[]
与 char* ChArr
相同.
sizeof()
运算符仅在给定数组名称时返回数组的大小,但在您的函数中您传递的是 char*
的地址那不返回你的字符串的长度;相反,它给出了 sizeof
指针变量 ChAr
(通常为 4 个字节或 8 个字节)。
了解如何sizeof()
运算符(operator)在这两种情况下都有效阅读:What does sizeof(&arr) return?
关于c - C中的函数打印字符内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17638462/