在C中复制字符串时出错

时间:2016-05-08 18:23:58

标签: c runtime-error

我有这个程序:

#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++;
    }
}

我无法理解为什么这段代码不起作用。 我明白了:

  

错误:程序已停止工作

我该如何解决?

3 个答案:

答案 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中的
  1. '\ n'被称为换行符。

  2.   默认情况下,C中的
  3. '\ 0'表示字符串的结尾。

  4.   

所以在循环中while (*src != '\n')而不是使用'\n'使用'\0' 。当while循环在\0字符串末尾标识src时,它将终止,到那时src字符串将被复制到dst字符串。