Извините, что поднял сообщение о чем-то настолько простом, но я не вижу то, что я делаю неправильно здесь.
char data[1024];
DWORD numRead;
ReadFile(handle, data, 1024, &numRead, NULL);
if (numRead > 0)
printf(data, "%.5s");
Мое намерение с вышеупомянутым состоит в том, чтобы считать данные из файла и затем только распечатать 5 символов. Однако это распечатывает все 1 024 символа, который противоречит тому, что я читаю здесь. Цель, конечно, состоит в том, чтобы сделать что-то как:
printf(data, "%.*s", numRead);
Что я делаю неправильно здесь?
Вы ваши параметры указаны в неправильном порядке. Должно быть записано:
printf("%.5s", data);
printf("%.*s", numRead, data);
Первый параметр в printf
- это спецификатор формата, за которым следуют все аргументы (которые зависят от вашего спецификатора).
Я думаю, вы меняете порядок аргументов на printf
:
printf("%.5s", data); // formatting string is the first parameter
Вы неправильно вызываете printf ().
int printf ( const char * format, ... );
Это означает ...
printf("%.5s", data);
Вы используете неправильный синтаксис для оператора printf
, а .number предназначен только для числовых переменных.
Так должно быть
int i;
for(i=0;i<5;i++)
printf("%c", data[i]);