我有一个关于字符串/字符的简单问题。我试图实现这样的基本系统;
#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)。
答案 0 :(得分:7)
你仍然需要在结尾处放置一个空终止字符(\0
)。
char n[5] = { '\0' }; // Initializes the array to all \0
strncpy(n, input, 4);
答案 1 :(得分:1)
你的n
字符需要大5个字节(4个字符+空终止符)。之后你会看到gonk,因为没有空终结符\0
。