限制输出C

时间:2010-05-29 01:31:35

标签: c

在C中,我想将字符串限制为前8个字符。例如,我有:

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

如何才能使它只返回前8个字符?

2 个答案:

答案 0 :(得分:9)

您可以通过在格式说明符中设置精度来限制长度:

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

这将从str指向的以null结尾的字符串中打印最多八个字符。如果str的长度小于八个字符,则它将打印整个字符串。

请注意,以null结尾的字符串的格式说明符为%s,而不是%c%c是打印单char),而{{1} }}返回printf(打印的字符总数),而不是int

答案 1 :(得分:0)

这是不正确的。表格打印“%8s”最多可以说8个空格,如给出的示例所示。它没有截断。 ISOC99。如果这只是一个Windows的东西,好吧,MS在许多事情上忽略了这个世界。如果字符串的长度比制表长,则打印完整的字符串。参见:

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;
}

在Solaris 5.9上从gcc 3.4.2输出:

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

sprintf()将复制并截断一个字符串,然后将其发送到printf。或者,如果您不关心源字符串:

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

参考文献:国际标准©ISO / IEC ISO / IEC 9899:TC2,WG14 / N1124委员会草案 - 2005年5月6日