我无法通过网络搜索找到任何信息。我应该在哪里寻找?
问问题
60731 次
7 回答
24
char myString[256]; // Input string
char dest[256]; // Destination string
strncpy(dest, myString, 10);
dest[10] = 0; // null terminate destination
于 2013-05-02T22:08:39.963 回答
7
char source[] = "abcdefthijklmn";
char target[100];
strncpy(target, source, 10);
target[10] = '\0'; // IMPORTANT!
于 2013-05-02T22:09:37.590 回答
4
添加到上述答案:
char* someString = "your string goes here";
int main()
{
int n = 10;
printf("(%.*s)\n", n, someString);
return 0;
}
于 2016-12-04T13:10:11.493 回答
3
有许多不同的方法可以实现您的目标:
您可以使用
snprintf
(最安全):char source[] = "abcdefthijklmn"; char target[100]; snprintf(target, sizeof target, "%.10s", source);
strncat
如果您知道目的地至少有 11 个元素,则可以使用:char source[] = "abcdefthijklmn"; char target[100]; *target = '\0'; strncat(target, source, 10);
您可以使用
strlen
andmemcpy
(关于目的地大小的相同假设):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';
于 2016-12-04T13:02:19.203 回答
0
如果您正在寻找一个好的来源,这里有一个在线手册页的示例,您可以使用: http: //linux.die.net/man/3/strncpy
需要注意的重要一点:您也可以使用 memcpy 代替 strncpy,但它需要您添加自己的空终止字节。
警告:如果 src 的前 n 个字节中没有空字节,则放在 dest 中的字符串不会以空值结尾。
因此,memcpy 和 strncpy 在这里的工作方式几乎相同,而且 memcpy 更高效且不易出错。
于 2013-05-02T22:12:08.697 回答
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;
}
于 2016-01-10T21:09:27.257 回答
0
您还可以使用sprintf
精度.10
格式:
#include <stdio.h>
#include <string.h>
int main(void)
{
char source[] = "abcdefghijklmnopqrstuvwxyz";
char dest[11];
memset(dest, '\0', sizeof(dest));
sprintf(dest, "%.10s", source);
printf("%s", dest); // abcdefghij
return 0;
}
于 2016-12-04T12:00:29.187 回答