Ошибка в программе на C++

419
31 января 2017, 22:07
#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
#include "conio.h"
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <string>
using namespace std;

int main()
{
    FILE *f;
    char obr[15];
    char fam[15];
    char name[15];
    char tel[10];
    char p[20];
    int n = 0;
    puts("File name:");
    scanf("%s", &p);
    f = fopen(p, "rt");
    puts("Enter surname:");
    scanf("%s", &obr);
    while (!feof(f))
    {
        fscanf(f, "%s %s %s", &fam, &name, &tel);
        if (fam == obr)
        {
            printf("%s %s %s", fam, name, tel);
            n++;
        }
    }
    if (n) { printf("Number of records: %i\n", n); }
    else { printf("No data. %i", n); }
    fclose(f);
    system("pause");
}

Помогите найти ошибку в коде, в ходе выполнения программы счётчик n=0, хотя у меня в блокноте есть такая запись "Ivanov Vasya 900-90-90". Суть программы: если в блокноте есть фамилия, совпадающая с той, которую вводит пользователь, то мы выводит данные, связанные с этой фамилией, и считаем количество найденных записей, т.е. n.

Answer 1

Вместо этого цикла

#include <string>
         ^^^^^^^
//...
while (!feof(f))
{
    fscanf(f, "%s %s %s", &fam, &name, &tel);
                         ^^^   ^^^    ^^^ 
    if (fam == obr)
        ^^^^^^^^^^ 
    {
        printf("%s %s %s", fam, name, tel);
        n++;
    }
}

напишите

#include <cstring>
         ^^^^^^^
//...
while ( fscanf(f, "%s %s %s", fam, name, tel) == 3 )
                             ^^^  ^^^   ^^^
{
    if ( strcmp( fam, obr) == 0)
        ^^^^^^^^^^ 
    {
        printf("%s %s %s", fam, name, tel);
        n++;
    }
}
READ ALSO
Является ли функция функтором

Является ли функция функтором

Является ли функция функтором?

430
Зачем нужен 4 конструктор, когда есть 3? [требует правки]

Зачем нужен 4 конструктор, когда есть 3? [требует правки]

Зачем нужен 4 конструктор, когда есть 3?

428
Приложение для обмена сообщениями C++ [требует правки]

Приложение для обмена сообщениями C++ [требует правки]

ЗдравствуйтеНеобходимо написать приложение для обмена сообщениями между пользователями (т

398
Зачем нужны std::logic_error

Зачем нужны std::logic_error

Для чего нужны проверки исключений типа std::logic_error, если в конечной программе такие ошибки отсутствуют, те

421