2015-03-06 5 views
0

Я хочу получить только 2 символа в моей программе. Я попробовал fgets, но я могу заставить его работать. Как вы предлагаете мне это реализовать? Или есть альтернатива?Получение конкретных # символов

char code[2]; 
printf("Enter code: \n"); 
scanf("%s", code);` 

Я хочу, чтобы ограничить количество символов, которые можно ввести до двух.

+0

'fgetc (fp)' (дважды) или 'fscanf (fp,"% c% c ", & c1, & c2)' - два варианта. – ryanpattison

+0

Вы хотите читать из 'stdin'? Вы можете ограничить количество символов 'fgets' символов в 2. Вы можете сделать то же самое с' getline'. Другой выбор - «scanf» с 2 символами в строке формата. –

+1

Если у вас есть код char [3]; '(примечание 3, а не 2), вы можете использовать' scanf («% 2s», code); ', но есть предостережения: начальное пустое пространство будет пропущено, а если есть один символ, а затем пробел, вы получите только один символ в строке. Если вам просто нужны два символа, тогда: 'code [0] = getchar(); code [1] = getchar(); 'почти нормально (за исключением того, что он неправильно распознает EOF). –

ответ

-5

Попробуйте этот код

#include<stdio.h> 
#include<conio.h> 
void main() 
{ 
char code; 
clrscr(); 
printf("enter the code\n"); 
scanf("%2s",code); 
printf("%s",code); 
getch(); 
} 
+0

Вы проверяли этот код? –

+0

да, я протестировал его. Он работает –

+0

1. 'char code' может хранить только один байт данных, что неверно в вашем случае. 2. 'printf («% s », код);' всегда будет печатать (null). –

1

Для чтения двух символов и игнорировать пробелы вы можете сделать:

#include <stdio.h> 
int main() { 
    char code[2]; 
    printf("Enter code:\n"); 
    if (scanf(" %c %c", &code[0], &code[1]) == 2) { 
     printf("successfully read '%c' and '%c'\n", code[0], code[1]); 
    } 
    return 0; 
} 

не игнорировать белое пространство использовать "%c%c" в качестве формата.

Смежные вопросы