如何打印有限数量的字符?

时间:2010-04-15 00:13:39

标签: c string formatting printf

很抱歉发布关于这么简单的事情的帖子,但我不知道我在这里做错了什么。

char data[1024];
DWORD numRead;

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

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

我的意图是从文件中读取数据,然后只打印5个字符。但是,它打印出所有1024个字符,这与我正在阅读的here相反。当然,目标是做一些事情:

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

我在这里做错了什么?

4 个答案:

答案 0 :(得分:27)

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

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

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

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:1)

您没有正确调用printf()。

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

这意味着......

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

答案 3 :(得分:-1)

您对printf语句使用了错误的语法,而.number仅用于数值变量。

所以它应该是

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