c - C中的函数打印字符内容

标签 c function char printf

我试图在 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/

相关文章:

c - 线程 1 : EXC_BAD_ACCESS

c++ - 链接问题与 g++ 有关,但与 cc 无关

c++ - 内核驱动程序读取内存未发送整个字符串

python - 将计算方法传递给函数的最简单方法

vba - 是否可以为功能分配别名?

c - 如何将 uint32 转换为 unsigned char 数组

c - linux上进程的开始时间

java - 将 Java main 转换为 Android Extend Activity

c - 打印 sizeof(char) 和 sizeof ("a"有什么问题)?

delphi - 德尔福中的 Char 和 Chr