开发者

Limit Output in C

In C, I would like to limit the string to the first 8 characters. For example, I have:

char out = printf("%c", str);

How can I开发者_运维百科 make it so it only returns the first 8 characters?


You can limit the length by setting the precision in the format specifier:

printf("%.8s", str);

This will print up to eight characters from the null-terminated string pointed-to by str. If the length of str is less than eight characters, then it will print the entire string.

Note that the format specifier for a null-terminated string is %s, not %c (%c is to print a single char), and that printf returns an int (the total number of characters printed), not a char.


No

That is incorrect. tabular printing "%8s" pads up to say 8 spaces, as in the example given. It does not truncate. ISOC99. If this is a windows only thing, okay, MS ignores the world on lots of things. If the length of the string is longer than the tabulation then the full string prints. See:

int main()
{
  char tmp[]="123456789";
  printf("1  %1s\n", tmp);
  printf("2  %2s\n", tmp);
  printf("4  %4s\n", tmp);
  printf("8  %8s\n", tmp);
  printf("16 %16s\n", tmp);
  printf("32 %32s\n", tmp);
  return 0;
}

output from gcc 3.4.2 on Solaris 5.9:

> ./a.out                   
1  123456789                       
2  123456789                       
4  123456789                       
8  123456789                       
16        123456789                
32                        123456789

sprintf() will duplicate and truncate a string then it can be sent to printf. Or if you don't care about the source string:

char * trunc(char *src, int len)
{
    src[len]=0x0;
    return src;
}

References: INTERNATIONAL STANDARD ©ISO/IEC ISO/IEC 9899:TC2, WG14/N1124 Committee Draft — May 6, 2005

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜