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;
}

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 &,

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

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

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

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

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

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

Ủ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?

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).

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?