我正在尝试使用数组作为函数的输入参数,当我用手动值调用此函数时,该函数运行良好,但是当我使用具有该值的数组而不是手动值时,我的函数没有'工作正常。
我的代码示例:
Search("FileName","Word");
----------------------
Search("NotePad1","Hello"); >>> Work Correctly!
----------------------
But:
--------------------
char Word[25]={'H','e','l','l','o'};
Search("NotePad1",Word); >>>Doesn't Work! :-(
--------------------
答案 0 :(得分:2)
"Hello"
之类的字符串文字也包括最后的NUL终结符字节。
也将终止符添加到数组中:
char Word[25]={'H','e','l','l','o', 0};
否则从数组中读取的C字符串也将包含数组末尾的任何垃圾数据和后面的内存位置,直到内存中的下一个零字节。
答案 1 :(得分:0)
怎么样:
char* Word = "Hello";
取决于你如何宣布你的功能。
答案 2 :(得分:0)
假设函数声明为
boolean Search(String Filename ,String word);
尝试
char Word[]={'H','e','l','l','o','\0'}; // <- NULL terminated , a well formed string
Search("NotePad1" , Word);
这是因为C / C ++中的String
并且null终止。
结论:
如果你传递char数组,其中参数需要一个String,确保char数组为空终止或传递字符串为&#34;这个&#34;。