сканирование строки с использованием структуры - PullRequest
0 голосов
/ 13 июля 2011

ниже приведен код c для структуры. в этой программе при сканировании значение имени программы заканчивается с этого момента. а также он принимает 2 значения в качестве массива имен. не дает никаких ошибок или предупреждений во время выполнения. Можете ли вы сказать мне, что является правильным решением для этой программы на мой электронный идентификатор ....

#include<stdio.h>
#include<conio.h>
struct student
{
    int id;
    char name[20];
    float per;
} st;
main()
{
    clrscr();
    printf("\nenter the info of student");
    printf("\n=======================\n");
    printf("id:");
    scanf("%d:",&st.id);
    printf("name :");
    scanf("%s :",st.name);
    printf("per :");
    scanf("%f :",&st.per);

    printf("\n id is: %d \n",st.id )  ;
    printf("\n name is: %s \n",st.name )  ;
    printf("\n per is: %1f \n",st.per )  ;
    getch();
    return 0;
}

Ответы [ 3 ]

1 голос
/ 13 июля 2011
scanf("%d:",&st.id); scanf("%s :",st.name); scanf("%f :",&st.per);

По какой причине вы включаете : и whitespaces в строку формата?

Читайте здесь: http://www.cplusplus.com/reference/clibrary/cstdio/scanf/

Попробуйте все из них снова, но без :. Например. scanf("%d",&st.id);

Имейте в виду, что scanf("%s",st.name); может закончиться перезаписью памяти, которую он не должен.

1 голос
/ 13 июля 2011

Вы должны проверять статус возврата по вызовам scanf(), чтобы вы могли определить, какой из них был неудачным.

  • Не забыли ли вы добавить двоеточия во входные данные, которые строки форматаrequire?

Помните, во входных данных ожидается все, что не является пробелом или спецификатором преобразования в формате scanf(), и вы ищете двоеточия после чисел и имен.

Кроме того, если вы планируете ввести имя и фамилию, спецификатор %s не подходит;он останавливается на первом месте.

0 голосов
/ 13 июля 2011

а как же

scanf("%s",st.name);

При вводе имени не используйте пробелы. чтобы получить имя с пробелами используйте fgets (..)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...