获取字符串的前10个字符?

时间:2013-05-02 22:07:00

标签: c string

我无法通过网络搜索找到任何信息。我应该在哪里看?

6 个答案:

答案 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);
    
  • 您可以使用strlenmemcpy(关于目的地大小的相同假设):

    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';
    
  • You could but should not use strncpy()