【问题标题】:How do you print a limited number of characters?如何打印有限数量的字符?
【发布时间】:2010-04-15 00:13:39
【问题描述】:

很抱歉就这么简单的事情发帖,但我看不出我在这里做错了什么。

char data[1024];
DWORD numRead;

ReadFile(handle, data, 1024, &numRead, NULL);

if (numRead > 0)
    printf(data, "%.5s");

我上面的意图是从文件中读取数据,然后只打印出 5 个字符。但是,它会打印出所有 1024 个字符,这与我正在阅读的 here 相反。当然,目标是执行以下操作:

printf(data, "%.*s", numRead);

我在这里做错了什么?

【问题讨论】:

    标签: c string formatting printf


    【解决方案1】:

    您的参数顺序错误。应该写成:

    printf("%.5s", data);
    
    printf("%.*s", numRead, data);
    

    printf 的第一个参数是格式说明符,后跟所有参数(取决于您的说明符)。

    【讨论】:

    • 上述格式字符串中是否不需要点 (.)?
    【解决方案2】:

    我认为您正在将参数顺序切换为printf

    printf("%.5s", data); // formatting string is the first parameter
    

    【讨论】:

      【解决方案3】:

      你没有正确调用 printf()。

      int printf ( const char * format, ... );
      

      这意味着......

      printf("%.5s", data);
      

      【讨论】:

        【解决方案4】:

        printf 语句的语法错误,.number 仅用于数值变量。

        应该是这样的

        int i;
        for(i=0;i<5;i++)
           printf("%c", data[i]);
        

        【讨论】:

        • .number 可以很好地处理字符数组,他只需要将参数按正确的顺序排列。
        • 对于字符串,精度(即 .numbers)告诉 printf 从字符串中打印不超过 N 个字符。如果您的字符串不是 '\0' 终止的,这将非常有用。
        • 哇。学到了一些新东西。我一直只是假设。谢谢。
        猜你喜欢
        • 1970-01-01
        • 2017-03-13
        • 2012-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-09
        • 1970-01-01
        相关资源
        最近更新 更多