Lỗi khi nhập tên hàng loạt

mình cứ bị lỗi là chưa kịp nhập tên giá trị đầu là nó đã nhảy tới giá trị 2 rồi, có ai chỉ cho mình lỗi được không ạ.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#include <windows.h>
void Menu(int &);
void Xuat(char [][50],int );
void Nhap(char [][50],int );
int main()
{
	int N,choice;
	char hoten[100][50],k[100], ten[100][50];
	do
	{
		system("CLS");
		Menu(choice);
		switch(choice)
		{
			case 1:
			{
				printf("Moi nhap so luong sinh vien(toi da la 100):");
				scanf("%d",&N);
				break;
			}
			case 2:Nhap(hoten,N);break;	
			case 3:Xuat(hoten,N);break;
			case 0:break;
			default:printf("chuc nang khong hop le!!!");
		}
		getch();
	}while(choice!=0);
	return 0;
}

void Menu(int &choice)
{
	printf("--------------------------Menu-----------------------\n");
	printf("1. Nhap so luong sinh vien\n");
	printf("2. Nhap ten sinh vien\n");
	printf("3. Xem danh sach sinh vien\n");
	printf("0. Thoat!!\n");
	printf("-----------------------------------------------------\n");
	printf("Hay chon chuc nang:");
	scanf("%d",&choice);
}
void Nhap(char hoten[][50],int N)
{
	for(int i=0;i<N;++i)
	{
		printf("Moi nhap ten sinh vien %d: ",i);
		gets(hoten[i]);
		fflush(stdin);
	}
}

void Xuat(char hoten[][50], int N)
{
	printf("Danh sach sinh vien:\n");
	for(int i=0;i<N;i++)
	{
		printf("%s",hoten[i]);
	}
}

Xóa bộ nhớ đệm trước khi nhập. Tại lúc bạn chọn chức năng sau đó enter thì nó bị dư dấu enter. Bạn dùng fflush() để xóa rồi dùng lệnh nhập thôi

3 Likes

cảm ơn bạn mình đã sửa được lỗi rồi :smile: )

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