c++ 使用scanf函数在代码中找不到错误:忽略返回值:“扫描”

rkkpypqq  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(112)

这是我的代码。它是用乌克兰语写的,但基本上,任务是:
通过结构确定最年轻和最年长的员工

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;

int main()
{
    setlocale(LC_ALL, "Russian");
    struct worker
    {
        char surname[22], posada[15], osvita[25];
        int birthday, salary;
    };
    int kol; cout << "Введите кол-во робітників: "; cin >> kol;
    cout << "Введите поочередно строки с ведомостью:\nПрiзвище   Посада    Освіта    Рік народження   Зарплатня" << endl;

    worker* z = new worker[kol];
    for (int i = 0; i < kol; i++) {
        scanf("%s %s %s %i %i", z[i].surname, z[i].posada, z[i].osvita, &z[i].birthday, &z[i].salary);
    }
    setlocale(LC_ALL, "Russian");
    cout << "Прiзвище   Посада    Освіта    Рік народження   Зарплатня" << endl;

    for (int i = 0; i < kol; i++) {
        cout << z[i].surname << "\t" << z[i].posada << "\t" << z[i].osvita << "\t" << z[i].birthday << "\t" << z[i].salary << endl;
    }
    cout << "Найстарший і наймолодний робітники:\nПрiзвище   Посада    Освіта    Рік народження   Зарплатня" << endl;

    int min, max;
    int max_index = 0, min_index = 0;
    min = z[0].birthday;
    max = z[0].birthday;
    for (int i = 0; i < kol; i++) {
        if (max < z[i].birthday) {max_index = i;}
        if (min > z[i].birthday) {min_index = i;}
        printf("% s % s % s % i % i\n", z[i].surname, z[i].posada, z[i].osvita, z[i].birthday, z[i].salary);
    }
    setlocale(LC_ALL, "Russian");
    cout << "Наймолодний робітник: " << z[min_index].surname<< endl;
    cout << "Найстарший робітник: " << z[max_index].surname << endl;
    setlocale(LC_ALL, ".OCP");
    delete[]z;
    return 0;

下面是输出:

carvr3hs

carvr3hs1#

scanf()返回它成功扫描并写入调用者提供的变量的值的数量。在这段代码中,你要求它扫描5个值,但是你没有在使用这些变量之前验证这5个值是否真的成功输出。这就是编译器警告你的。
例如:

int numScanned = scanf("%s %s %s %i %i", z[i].surname, z[i].posada, z[i].osvita, &z[i].birthday, &z[i].salary);
if (numScanned != 5) {
    // error, do something...
}   
else {
    // use variables as needed...
}

相关问题