在 C 中复制字符串时出错
Error copying a string in C
我有这个程序:
#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++;
}
}
我不明白为什么这段代码不起作用。
我得到:
Error: the program has stopped working
我该如何解决?
你应该写while(*src != '[=10=]')
。 C 中的字符串以 NULL 字符 '\0' 结束,而不是以换行符 '\n' 结束。
你应该使用 '[=11=]'
而不是 '\n'
:
试试这个:
void string_copy(char * dst,char * src){
if(src == NULL || dst == NULL) return;
while(*src != '[=10=]'){
*dst = *src;
dst++;
src++;
}
*dst = '[=10=]'; // <-- need to add this
}
[=13=]
是空字符
\n
是新行 char
'\n' in C is known as new line character.
'[=17=]' in C by default signify end of the string.
所以在循环中 while (*src != '\n')
而不是使用 '\n'
使用 '[=12=]'
.当 while 循环将在 src
字符串的末尾识别 [=13=]
时它将终止,到那时 src
字符串将被复制到 dst
字符串。
我有这个程序:
#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++;
}
}
我不明白为什么这段代码不起作用。 我得到:
Error: the program has stopped working
我该如何解决?
你应该写while(*src != '[=10=]')
。 C 中的字符串以 NULL 字符 '\0' 结束,而不是以换行符 '\n' 结束。
你应该使用 '[=11=]'
而不是 '\n'
:
试试这个:
void string_copy(char * dst,char * src){
if(src == NULL || dst == NULL) return;
while(*src != '[=10=]'){
*dst = *src;
dst++;
src++;
}
*dst = '[=10=]'; // <-- need to add this
}
[=13=]
是空字符
\n
是新行 char
'\n' in C is known as new line character.
'[=17=]' in C by default signify end of the string.
所以在循环中 while (*src != '\n')
而不是使用 '\n'
使用 '[=12=]'
.当 while 循环将在 src
字符串的末尾识别 [=13=]
时它将终止,到那时 src
字符串将被复制到 dst
字符串。