Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Bị lỗi khi nhập chuỗi kí tự có khoảng trắng. Mọi người giúp đỡ em với?

  1. #1
    Ngày gia nhập
    02 2015
    Bài viết
    3

    Mặc định Bị lỗi khi nhập chuỗi kí tự có khoảng trắng. Mọi người giúp đỡ em với?

    Em đang học lập trình C về bài quản lí sinh viên.
    Khi em tạo hàm nhập thông tin sinh viên thì đến phần nhập họ tên có khoảng trắng thì lại bị lỗi, không có khoảng trắng thì chạy bình thường
    Mọi người chỉ em sửa lỗi này với

    Code:
    #include <stdio.h>
    #include <string.h>
    typedef struct 
    {
    	char tenmon[50];
    	char mamon[50];
    	int sotc;
    	float diem;
    }MH;
    typedef struct 
    {
    	char hoten[50];
    	char mssv[10];
    	int tuoi;
    	int somon;
    	MH kq[100];
    	int tongtc, tongtctl;
    	float dtbc, dtbtl;
    }SV;
    void nhapsv(SV &s)
    {
    		printf("Nhap MSSV:"); scanf("%s", &s.mssv);
    		printf("Nhap Ho ten:"); scanf("%s", &s.hoten); //bi loi khi nhap co khoang trang
    		printf("Nhap Tuoi:"); scanf("%d", &s.tuoi);
    		printf("Nhap so mon:"); scanf("%d", &s.somon);
    		printf("**********************************\n");
    		for (int i = 0; i < s.somon; i++)
    		{
    			printf("Nhap ten mon thu %d:", i + 1); scanf("%s", &s.kq[i].tenmon);
    			printf("Nhap ma mon thu %d:", i + 1); scanf("%s", &s.kq[i].mamon);
    			printf("Nhap so tc mon thu %d:", i + 1); scanf("%d", &s.kq[i].sotc);
    			printf("Nhap diem mon thu %d:", i + 1); scanf("%f", &s.kq[i].diem);
    		}
    		printf("**********************************\n");
    }
    void main()
    {
    	SV a;
    	nhapsv(a);
    }

  2. #2
    Ngày gia nhập
    07 2011
    Bài viết
    474

    xài gets/fgets hoặc tự tạo hàm riêng đọc từng ký tự bằng hàm getc/fgetc/getchar thay cho scanf("%s")

    vd xài fgets:
    C Code:
    1. fgets(s.hoten, 50, stdin);
    2. s.hoten[strlen(s.hoten)-2] = '\0'; /* bỏ dấu '\n' cuối chuỗi */

  3. #3
    Ngày gia nhập
    02 2015
    Bài viết
    3

    Trích dẫn Nguyên bản được gửi bởi INTP Xem bài viết
    xài gets/fgets hoặc tự tạo hàm riêng đọc từng ký tự bằng hàm getc/fgetc/getchar thay cho scanf("%s")

    vd xài fgets:
    C Code:
    1. fgets(s.hoten, 50, stdin);
    2. s.hoten[strlen(s.hoten)-2] = '\0'; /* bỏ dấu '\n' cuối chuỗi */
    Cảm ơn anh ạ. Mong anh tiếp tục giúp đỡ em thêm

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn