2014-09-07 2 views

ответ

4

В вашем примере, %c читает пространство перед r, и последующее scanf("%d") не удается прочитать целое (так как оно представлено с r 1).

Чтобы проверить это, проверьте возвращаемое значение scanf(): оно равно the number of items successfully matched and stored, поэтому окончательный scanf() будет возвращать ноль.

P.S. В malloc() (или где-нибудь еще в этом случае) вы не должны предполагать, что sizeof(int) == 4.

+0

И должен также быть 'free' вызов указателя' malloc''ed. – Abhineet

+0

Как проверить значение возвращаемого значения scanf()? –

+0

Вы назначаете его переменной (как и с возвращаемым значением любой другой функции), а затем исследуете переменную (как и с любой другой переменной). – NPE

0

(1) Дайте пространство перед тем %c в зсапЕ (т.е.) scanf(" %c",&C);

(2) Функция Scanf возвращает количество входных элементов успешно согласованный и назначенный.

Для проверки Scanf возвращаемого значения,

void main 
    { 
    int a,b,c,d; 
    a=scanf("%d%d%d",&b,&c,&d); 
    printf("a=%d\n",a);//a=3 
    a=scanf("%d",&b); 
    printf("a=%d",a);//a=1 
    } 
1

Для %c спецификатора преобразования, зсап не опускает пробельный как это делает для %d, например. Вы должны сказать scanf пропустить пробелы, а затем прочитать первый символ без пробелов. Вот ваш фиксированный код.

#include<stdio.h> 
#include <stdlib.h> 
int main() 
    { 
     int i,l,*A;char C; 
     A=malloc(5*sizeof(int)); 
     for(i=0;i<5;i++) 
      scanf("%d",A+i); 
     scanf(" %c",&C); 
     // ^here 
     scanf("%d",&l); 
     printf("%d%c\n",l,C); 
     free(A); // remember to free what you've malloc'd 

return 0; 
} 

Поскольку вы спрашиваете, как проверить возвращаемое значение из зсапЕ см прототип зсапЕ:

Int зсапЕ (Const символ * формат, ...);

Как вы можете видеть, он возвращает int. Человек страницы говорит даже больше о возвращаемом значении:

ВОЗВРАТ СТОИМОСТИ
Эти функции возвращают число входных элементов успешно согласованы и назначен, который может быть меньше, чем предусмотрено для, или даже нулевой в случае раннего несоответствие соответствия.

Эта часть я отправлю для вас. Надеюсь, теперь ясно, как проверить возвращаемое значение scanf.

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