我无法通过网络搜索找到任何信息。我应该在哪里看?
答案 0 :(得分:14)
char myString[256]; // Input string
char dest[256]; // Destination string
strncpy(dest, myString, 10);
dest[10] = 0; // null terminate destination
答案 1 :(得分:4)
char source[] = "abcdefthijklmn";
char target[100];
strncpy(target, source, 10);
target[10] = '\0'; // IMPORTANT!
答案 2 :(得分:2)
添加上述答案:
char* someString = "your string goes here";
int main()
{
int n = 10;
printf("(%.*s)\n", n, someString);
return 0;
}
答案 3 :(得分:0)
如果您正在寻找一个好的来源,这里有一个您可以使用的在线手册页的示例: http://linux.die.net/man/3/strncpy
重要的是要注意:您也可以使用memcpy而不是strncpy,但它需要您添加自己的空终止字节。
警告:如果src的前n个字节中没有空字节,则放在dest中的字符串将不会以空值终止。
因此,memcpy和strncpy的工作方式几乎相同,memcpy效率更高,更不容易出错。
答案 4 :(得分:0)
我让它像这样工作。
# include <stdio.h>
# include <string.h>
//Strings. String lenght terminator.
//KHO2016.no1. mingw (TDM-GCC-32) . c-ansi .
int main ()
{
//declare
char src_str[20],dst_str[10];
//valuate
printf ("Enter a sentance of 20 letters\n");
gets (src_str);
strcpy (dst_str,src_str);
//calculate
dst_str [10] ='\0'; // from the "www.stack overflow"
printf ("%s",dst_str);
printf ("\n");
//terminate
return 0;
}
答案 5 :(得分:0)
有许多不同的方法可以实现您的目标:
您可以使用snprintf
(最安全):
char source[] = "abcdefthijklmn";
char target[100];
snprintf(target, sizeof target, "%.10s", source);
如果您知道目的地至少有11个元素,则可以使用strncat
:
char source[] = "abcdefthijklmn";
char target[100];
*target = '\0';
strncat(target, source, 10);
您可以使用strlen
和memcpy
(关于目的地大小的相同假设):
char source[] = "abcdefthijklmn";
char target[100];
size_t len = strlen(source);
if (len > 10)
len = 10;
memcpy(target, source, len);
target[len] = '\0';
您可以使用循环(关于目标大小的相同假设):
char source[] = "abcdefthijklmn";
char target[100];
size_t i;
for (i = 0; i < 10; i++) {
target[i] = source[i];
}
target[i] = '\0';