【发布时间】:2014-04-10 10:53:40
【问题描述】:
抱歉,如果我的以下问题听起来微不足道,但我正在努力解决“将 char 数组转换为字符串”的基本概念,以便在方法 strstr() 中使用。
基本上我有一个名为EUI_only[] 的数组,它在我的程序的某个阶段即动态填充,即
EUI_only[0] = A;
EUI_only[1] = B;
EUI_only[2] = C;
EUI_only[3] = D;
EUI_only[4] = E;
我在程序顶部声明 EUI_only 如下:
char EUI_only[];
我可以确认 EUI_only[] 已成功填充,因为我在方法 strstr() 中使用它之前将其打印出来。
现在我有了第二个数组 receive_key_press_temporary_analysis_buffer,我打算在 strstr() 中使用它,即包含类似于 EUI_only 中的字符的数组。
这个数组也是在我的程序的某个点动态填充的,我可以在我打印这个数组之前在strstr() 中使用它之前确认数组的内容是完整的。
这个名为receive_key_press_temporary_analysis_buffer的数组的内容如下所示:
receive_key_press_temporary_analysis_buffer[0] = 1;
receive_key_press_temporary_analysis_buffer[1] = 2;
receive_key_press_temporary_analysis_buffer[2] = C;
receive_key_press_temporary_analysis_buffer[3] = A;
receive_key_press_temporary_analysis_buffer[4] = B;
receive_key_press_temporary_analysis_buffer[5] = C;
receive_key_press_temporary_analysis_buffer[6] = D;
receive_key_press_temporary_analysis_buffer[7] = E;
receive_key_press_temporary_analysis_buffer[8] = 3;
receive_key_press_temporary_analysis_buffer[9] = 4;
下面基本上是我如何在strstr() 中使用这两个数组:
char* is_eui_only_content_in_receive_key_press_analysis = strstr(receive_key_press_temporary_analysis_buffer, EUI_only);
printf("\n\rResult of is_eui_only_content_in_receive_key_press_analysis: %s\n\r", is_eui_only_content_in_receive_key_press_analysis);
基本上当我打印strstr() 的结果时,它给了我:
Result of is_eui_only_content_in_receive_key_press_analysis: CDE34
另一方面,如果我重新初始化我的 EUI_only 如下:
EUI_only[] = "ABCDE";
基本上我从 strstr() 得到预期的结果,即
Result of is_eui_only_content_in_receive_key_press_analysis: ABCDE34
为什么当我使用动态填充的 EUI_only[] 数组时 strstr() 没有给我预期的结果?
谢谢, 亚历克斯。
【问题讨论】:
-
您的两个存档是否在数据末尾都以零结尾?
-
你为什么描述你的代码而不是展示它?向我们隐藏代码几乎没有帮助。
-
确保动态分配数组时应以空字符“\0”终止。当你用“ABCDE”初始化时,默认填充空字符
标签: c