Code quản lý nhân viên bị sai output

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

typedef struct{
	char hoten[100];
	int songaycong;
	int bac;
}nhanvien;
int main(){
	int n,i;
	nhanvien nvlist[n];
	printf("Nhap vao so nhan vien: ");
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		printf("Nhap ten nhan vien thu %d: ",i+1);
		scanf("%d",&nvlist[i].hoten);
		printf("Nhap so ngay cong cua nhan vien thu %d: ",i+1);
		scanf("%d",&nvlist[i].songaycong);
		printf("Nhap bac luong cua nhan vien thu %d: ",i+1);
		scanf("%d",&nvlist[i].bac);
	}
	for(i=0;i<n;i++)
	{
		printf("%s \t\t%d \t%0.2d",nvlist[i].hoten,nvlist[i].bac,nvlist[i].songaycong*nvlist[i].bac*1.05);
	}
	return 0;
}

sai ở chỗ khai báo nvlist[n] trước khi nhập giá trị cho n

cho cái nhanvien nvlist[n]; xuống dưới dòng scanf("%d",&n); là được

1 Like

vẫn không được ạ…

scanf("%d",&nvlist[i].hoten); 

phai là

scanf("%s",&nvlist[i].hoten);

bạn có thực sự thông hiểu việc nhập stdin chú ý flush
thêm vào 1 sự logic sau

fflush(stdin) // (xóa bộ đệm nhập từ bàn phím nữa)

à em hiểu rồi :yum:

  1. fflush(stdin) có thể sẽ không chạy :smiley:
  2. scanf("%s") sẽ dừng khi gặp khoảng trắng (nhận thiếu).
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?