将char *复制到另一个char []

时间:2013-09-23 16:01:53

标签: c++ arrays string char

我有一个关于字符串/字符的简单问题。我试图实现这样的基本系统;

#include <stdio.h>
#include <string.h>

int main()
{
    //I'll use 'char*' for socket receive buffer!
    const char* input = "This is a test!";
    char n[4];
    strncpy(n, input, 4);
    printf("%s\n%i\n", n, strlen(n));
    return 0;
}

我得到了这个输出:

Thisd0@
7

出了什么问题?这是一个简单的for / while循环(IDK)。

2 个答案:

答案 0 :(得分:7)

你仍然需要在结尾处放置一个空终止字符(\0)。

char n[5] = { '\0' }; // Initializes the array to all \0
strncpy(n, input, 4);

答案 1 :(得分:1)

你的n字符需要大5个字节(4个字符+空终止符)。之后你会看到gonk,因为没有空终结符\0