Как Вы печатаете ограниченное количество символов?

Извините, что поднял сообщение о чем-то настолько простом, но я не вижу то, что я делаю неправильно здесь.

char data[1024];
DWORD numRead;

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

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

Мое намерение с вышеупомянутым состоит в том, чтобы считать данные из файла и затем только распечатать 5 символов. Однако это распечатывает все 1 024 символа, который противоречит тому, что я читаю здесь. Цель, конечно, состоит в том, чтобы сделать что-то как:

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

Что я делаю неправильно здесь?

13
задан cartoonist 21 January 2016 в 11:59
поделиться

4 ответа

Вы ваши параметры указаны в неправильном порядке. Должно быть записано:

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

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

Первый параметр в printf - это спецификатор формата, за которым следуют все аргументы (которые зависят от вашего спецификатора).

29
ответ дан 1 December 2019 в 19:59
поделиться

Я думаю, вы меняете порядок аргументов на printf :

printf("%.5s", data); // formatting string is the first parameter
4
ответ дан 1 December 2019 в 19:59
поделиться

Вы неправильно вызываете printf ().

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

Это означает ...

printf("%.5s", data);
1
ответ дан 1 December 2019 в 19:59
поделиться

Вы используете неправильный синтаксис для оператора printf , а .number предназначен только для числовых переменных.

Так должно быть

int i;
for(i=0;i<5;i++)
   printf("%c", data[i]);
-2
ответ дан 1 December 2019 в 19:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: