user-0 提问: 请教个很水的问题，谢谢。。。

回复:
user: user-0
content: 引用 14 楼 xihu1364 的回复:不能通过 因为dest[1000] 没初始化  所以join中 必须加上 dest[nStrLen] = '\0'; 引用 15 楼 Saleayas 的回复:void join(char* strs[], int strNum, char *dest) {     int i; if (strNum > 0) strcpy(dest, strs[i]);     for(i=1;i<strNum;i++)         strcat(dest,strs[i]); }   确实是初始化问题，改过后可以通过了，谢谢你们，初始化这个问题应该引起重视的。。。

user: user-1
content: 引用 11 楼 xihu1364 的回复:评判??   void join(char* strs[], int strNum, char *dest) { 	int i; 	for(i=0;i<strNum;i++) 		strcat(dest,strs[i]); }  void main() { 	char* ss[] = {"hello,","welcome to ","C context!"}; 	char dest[1000] = {0}; 	join(ss,3,dest); 	printf("%s\n",dest);  	while (1) 	{ 		Sleep(100); 	} }   正常编译，运行结果正常  #Include <string.h> void join(char const* strs[], int strNum, char *dest) { 	int i;         strcpy(dest, strs[0]); 	for(i=1;i < strNum;i++) 		strcat(dest,strs[i]); }  int main(void) { 	char const* ss[] = {"hello,","welcome to ","C context!"}; 	char dest[1000];//= {0}; 	join(ss, sizeof(ss)/sizeof(char const*),dest); 	printf("%s\n",dest);  	//while (1) 	//{ 	//	Sleep(100); 	//}         return 0; }

user: user-2
content: void join(char* strs[], int strNum, char *dest) {     int i; if (strNum > 0) strcpy(dest, strs[i]);     for(i=1;i<strNum;i++)         strcat(dest,strs[i]); }

user: user-3
content: 不能通过 因为dest[1000] 没初始化  所以join中 必须加上 dest[nStrLen] = '\0';

user: user-3
content: 看到上面的回复了   void join(char* strs[], int strNum, char *dest) { 	int nStrLen = 0;  	for(int i=0;i<strNum;i++) 	{ 		nStrLen += strlen(strs[i]);  		strcat(dest,strs[i]); 	} 	dest[nStrLen] = '\0'; }  void main() { 	char* ss[] = {"hello,","welcome to ","C context!"}; 	char dest[1000]; 	join(ss,3,dest); 	printf("%s\n",dest); }

user: user-0
content: 引用 11 楼 xihu1364 的回复:评判??   void join(char* strs[], int strNum, char *dest) { 	int i; 	for(i=0;i<strNum;i++) 		strcat(dest,strs[i]); }  void main() { 	char* ss[] = {"hello,","welcome to ","C context!"}; 	char dest[1000] = {0}; 	join(ss,3,dest); 	printf("%s\n",dest);  	while (1) 	{ 		Sleep(100); 	} }   正常编译，运行结果正常 我也是觉得奇怪，应该是这个判题的系统问题吧，哎。。

user: user-3
content: 评判??   void join(char* strs[], int strNum, char *dest) { 	int i; 	for(i=0;i<strNum;i++) 		strcat(dest,strs[i]); }  void main() { 	char* ss[] = {"hello,","welcome to ","C context!"}; 	char dest[1000] = {0}; 	join(ss,3,dest); 	printf("%s\n",dest);  	while (1) 	{ 		Sleep(100); 	} }   正常编译，运行结果正常

user: user-0
content: 引用 8 楼 march0912 的回复:[quote=引用 7 楼 march0912 的回复:] strcat(dest,str[i]); str[i]是什么？ 当i = 0的时候，str[0] = "hello",它只是这个字符串的首地址，你strcat这个首地址是个什么意思  看错了[/quote]那个评判系统是这样提示的：编译成功，但无法通过评判。

user: user-0
content: 引用 6 楼 starytx 的回复:void join(char* strs[], int strNum, char *dest){  int i;  for(i=0;i<strNum;i++)  strcat(dest,strs[i]);  难道是这个原因？ 不是，这个应该是我发帖时打错的，不好意思。

user: user-4
content: 引用 7 楼 march0912 的回复:strcat(dest,str[i]); str[i]是什么？ 当i = 0的时候，str[0] = "hello",它只是这个字符串的首地址，你strcat这个首地址是个什么意思  看错了

user: user-4
content: strcat(dest,str[i]); str[i]是什么？ 当i = 0的时候，str[0] = "hello",它只是这个字符串的首地址，你strcat这个首地址是个什么意思

user: user-5
content: void join(char* strs[], int strNum, char *dest){  int i;  for(i=0;i<strNum;i++)  strcat(dest,strs[i]);  难道是这个原因？

user: user-0
content: 引用 4 楼 Saleayas 的回复:正确的写法应该是： char dest[1000]; // 这里需要清零。  但是如果使用者没有清零。 那么 join 中，你也可以清零。 因为 strcat 需要 dest 有字符串的终止符。 但是这个题目是在一个考试的判断系统，题目应该是只需要我们书写join（）函数的实现，main（）函数是题目系统给定的，我也不知道是怎么样的，只要join函数写对了，题目就通过。。

user: user-2
content: 正确的写法应该是： char dest[1000]; // 这里需要清零。  但是如果使用者没有清零。 那么 join 中，你也可以清零。 因为 strcat 需要 dest 有字符串的终止符。

user: user-0
content: 引用 1 楼 Saleayas 的回复:dest  需要初始化。怎么初始化。这个是传进来的值，不是应该在main（）里面初始化的吗。题目的意思是只要写join这个函数，系统会自动判断你写得对还是错，结果显示：编译通过，但没有核实正确。

user: user-6
content: 然后呢？？？

user: user-2
content: dest  需要初始化。