使用数组作为函数输入参数

Using Arrays For Function Input Argument

我正在尝试使用数组作为函数的输入参数,当我使用手动值调用此函数时,函数运行良好,但是当我使用具有该值而不是手动值的数组时,我的函数无法正常工作。

我的代码示例:

Search("FileName","Word");
----------------------
Search("NotePad1","Hello"); >>> Work Correctly!
----------------------
But:
--------------------

char Word[25]={'H','e','l','l','o'};

Search("NotePad1",Word); >>>Doesn't Work! :-(
--------------------

字符串字面量如 "Hello" 也包括末尾的 NUL 终止字节。

也将终止符添加到您的数组中:

char Word[25]={'H','e','l','l','o', 0};

否则,从数组中读取的 C 字符串还将包含数组末尾的任何垃圾数据和其后的内存位置,直到内存中的下一个零字节。

怎么样:

char* Word = "Hello";

取决于您声明函数的方式。

假设函数声明为

boolean Search(String Filename ,String word);

尝试

char Word[]={'H','e','l','l','o','[=11=]'}; // <- NULL terminated , a well formed string
Search("NotePad1" , Word);

因为C/C++中的String和null终止。

结论

如果您在参数需要字符串的地方传递 char 数组,请确保 char 数组以 null 终止或将字符串作为 "this" 传递。