ibilalkayy Ответов: 1

Как сделать, чтобы оператор if работал правильно?


#include <stdio.h>
#include <string.h>
#include <ctype.h>

int all_digits(char *s){
  for (; *s!=0; s++){
    if (!isdigit(*s)){
      return 0;
    }
  }
  return 1;
}

int main(){
  FILE * fr = fopen("file.csv", "r");

  char save[500], line[200],  to_find[50];
  int oneByOne = 0, numberOfFields=8;
  char *word = NULL;
  printf("Enter the ID card number: ");
  scanf("%s", to_find);

  if(all_digits(to_find) && strlen(to_find) ==  13){
    while(fgets(line, 200, fr)){
      word = strtok(line, "\n");
      strcpy(save, line);

      if (strstr(save, to_find)){
        char *wordone = strtok(save, ",");
        while (wordone != NULL){
          printf("Here are your details: %s\n", wordone);
          wordone = strtok(NULL, ",");
        }
      }
    }
    fclose(fr);

    printf("Found. Hello World!\n");
  }  
  else {
    printf("enter correclty\n");
  }
return 0;
}


Что я уже пробовал:

У этого кода есть одна проблема. Проблема в том, что
if(all_digits(to_find) && strlen(to_find) ==  13)
Всякий раз, когда я пытаюсь ввести 13 символов, но не из файла, то он должен дать мне сообщение else statement, но он печатает Привет, мир!. Хотя Привет, мир! находится в if-утверждении. Как сделать так, чтобы это работало правильно?

1 Ответов

Рейтинг:
0

CPallini

Цитата:
if(all_digits(to_find) && strlen(to_find) == 13)
Вышеприведенная проверка просто проверяет входные данные формат.

Теперь вам нужно проверить, есть ли введенный "номер идентификационной карты" в файле.

Я предлагаю вам написать функцию для поиска внутри файла (просто переместите свой поисковый код из main к функции и возвращает результат). Затем, основываясь на возвращаемом значении функции, ваш код может показать пользователю правильное сообщение.


Garth J Lancaster

+5 :)

CPallini

Спасибо!