我有这个程序:
#include <stdio.h>
void string_copy(char * dst,char * src);
int main(){
char stringA[] = "Hello";
char stringB[10];
string_copy(stringB,stringA);
printf("%s",stringB);
return 0;
}
void string_copy(char * dst,char * src){
if(src == NULL || dst == NULL) return;
while(*src != '\n'){
*dst = *src;
dst++;
src++;
}
}
我无法理解为什么这段代码不起作用。 我明白了:
错误:程序已停止工作
我该如何解决?
答案 0 :(得分:2)
你应该写while(*src != '\0')
。 C中的字符串由NULL字符'\ 0'终止,而不是由换行'\ n'终止。
答案 1 :(得分:2)
您应该使用'\0'
代替'\n'
:
试试这个:
void string_copy(char * dst,char * src){
if(src == NULL || dst == NULL) return;
while(*src != '\0'){
*dst = *src;
dst++;
src++;
}
*dst = '\0'; // <-- need to add this
}
\0
是NULL char
\n
是新行字符
答案 2 :(得分:0)
C中的
- 默认情况下,C中的
'\ n'被称为换行符。
- 醇>
'\ 0'表示字符串的结尾。
所以在循环中while (*src != '\n')
而不是使用'\n'
使用'\0'
。当while循环在\0
字符串末尾标识src
时,它将终止,到那时src
字符串将被复制到dst
字符串。