Функция int getw (FILE* stream) читает четыре байта из потока stream, интерпретируя их как int; это не функция чтения ASCII-строки. Для чтения строки из файла есть функция char* fgets (char *str, int n, FILE *stream) или из потока stdin: char* gets (char*).
| Код | #include <stdio.h> #include <stdlib.h> void main () { char buffer [16]; printf ("Enter value: "); int value = atoi (gets (buffer)); printf ("value = %d\n", value); } |
Недостаток функции gets () состоит в том, что возможно переполнение буфера.
Можно иначе:
| Код | #include <stdio.h> #include <stdlib.h> void main () { char buffer [16]; printf ("Enter value: "); int value = atoi (fgets (buffer, 16, stdin)); printf ("value = %d\n", value); } |
Или так:
| Код | #include <stdio.h> #include <stdlib.h> void main () { char buffer [16]; FILE* input = fopen ("con", "r"); if (input) { printf ("Enter value: "); int value = atoi (fgets (buffer, 16, input)); printf ("value = %d\n", value); fclose (input); } else { printf ("Cannot open console.\n"); } } |
Вместо «con» можно подставить имя файла.
У вас есть MSDN или прочая документация? Там об этом можно узнать подробнее. |