01/10/2018, 09:42

Thắc mắc về nhập xuất C/C++

Cho mình hỏi là tại sao chương trình của mình báo lỗi thế này:
The program terminates abnormally at the time of entering the float value for e[i].sal.
floating point formats not linked
Abnormal program termination

Mình seach mãi k hiểu @@

#include<stdio.h>
int main()
{
    struct emp
    {
        char name[20];
        float sal;
    };
    struct emp e[10];
    int i;
    for(i=0; i<=9; i++)
        scanf("%s %f", e[i].name, &e[i].sal);
    return 0;
}
2D_team_free_online_Education viết 11:48 ngày 01/10/2018

theo mình thì sai ở chỗ hàm scanf ko nhận kí tự khoảng trắng , bạn tách ra viết lại bằng gets xem , cái e[i].name đấy thiếu &,

Cao Tấn Thịnh viết 11:55 ngày 01/10/2018

nó báo lỗi ở e[i].sal cơ bạn ơi

2D_team_free_online_Education viết 11:56 ngày 01/10/2018

int main(){ struct emp { char name[20]; float sal; }; struct emp e[10]; int i; for(i=0; i<=9; i++) scanf("%s %f", e[i].name, &e[i].sal); return 0;}

visua mình chạy bình thường mà bạn ơi

Cao Tấn Thịnh viết 11:44 ngày 01/10/2018

Mình không biết visual sao lại chạy đúng nhưng kết quả trên turboC sai và code block của mình cũng sai

2D_team_free_online_Education viết 11:53 ngày 01/10/2018

mình đã thử trên 3 IDE là visua , dev C++ và code block vẫn chạy như 1 vị thần mà

Trần Hoàn viết 11:54 ngày 01/10/2018

Hình như cái này là do phiên bản C/C++ thì phải

rogp10 viết 11:51 ngày 01/10/2018

Do trình biên dịch (của Turbo C) cùi bắp đấy scanf("%f") mà không nhận là hiểu rồi.

Trần Hoàn viết 11:51 ngày 01/10/2018

Ủa, hồi trước mình học cũng Turbo C++ mà, nó có nhận đấy chứ?
Mà tại sao lại e[i].name mà không phải &e[i].name?

rogp10 viết 11:56 ngày 01/10/2018

Vì e[i].name đã là char* rồi.
Mấy biến int float gì đó phải lấy & để có pointer mà nhập vào, chứ char* nó là pointer sẵn rồi, nếu & nữa thì thành ra cho nhập vào pointer (?) Để truyền tham biến trong C thì cách duy nhất là thông qua pointer, tức là tham trị với pointer nhưng tham biến với cái nó đang trỏ vào. C++ hỗ trợ tham biến qua tham chiếu (reference).

Bài liên quan
0