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;
}
Bài liên quan
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
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).