Я борюсь с strcmp в c - PullRequest
       2

Я борюсь с strcmp в c

1 голос
/ 28 апреля 2011

Я изо всех сил пытаюсь сравнить пользовательский ввод с содержимым файла. По сути, я создал функцию, которая обновляет сведения о сотруднике, который сначала запрашивает имя сотрудника, а затем сравнивает имя, введенное с данными в файле. Я пытался сделать это:

void update(EMPLOYEE *details)
{
    FILE *file;
    char search;
    file = fopen("employees.txt","r");
    if(file == NULL)
    {
        printf("File error!!!");
        exit(0);
    }
    else
    {
        search = getc(file);
        printf("Enter name: ");
        scanf("%s",details->name);

        if((strcmp(search,details->name) == 0))
        {
            printf("%s\n",details->name);
            printf("%d",details->employeeNumber);
        }
    }

    fclose(file);
}

Ответы [ 3 ]

3 голосов
/ 28 апреля 2011

Вы сравниваете один символ, search с (я предполагаю) всей строкой, details->name.

Подпись метода для strcmp:

int strcmp (const char *str1, const char *str2);

Вы называете это как:

int strcmp (const char str1, const char *str2);

Не только это, но вы собираетесь читать за пределами вашего буфера символов str1, если вы исправите его, чтобы он компилировался, если только он не является символом0, чего не будет.

Чтобы исправить это, вы должны выполнить одно из следующих действий:

  • Измените свое сравнение, чтобы взглянуть только на первые символы.
  • Измените переменную поиска на строку (вероятно, char []) и прочитайте всю строку, затем сравните.
1 голос
/ 28 апреля 2011

strcmp принимает строку (char *), а не одну букву.Как уже упоминалось в комментариях, вам нужно обновить процесс getc, чтобы прочитать больше, чем одно письмо.

0 голосов
/ 28 апреля 2011

подсказка:

EMPLOYEE fileData;

while ( fread( &fileData, sizeof( fileData ), 1, file ) == sizeof( fileData )
{
...
}

РЕДАКТИРОВАТЬ: изменил чтение на fread, поскольку это ФАЙЛ *

hth

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