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

Đề tài: Nhập dữ liệu cho file truy cập trực tiếp, đang chạy trên win7 thì báo stoped và dừng chuơng trình

  1. #1
    Ngày gia nhập
    08 2011
    Bài viết
    36

    Mặc định Nhập dữ liệu cho file truy cập trực tiếp, đang chạy trên win7 thì báo stoped và dừng chuơng trình

    Mọi người giúp em kiểm tra xem code này sai ở đâu ạ? chỉ là nhập các thông tin của một struct rùi ghi struct đó ra file kiểu trực tiếp để có thể truy cập trực tiếp nhằm xử lý sau này.
    Chương trình chỉ chạy được đến nhập số lượng bản ghi ban đầu thì hiện ra một thông báo ngắt chương trình của windows, và chương trình dừng lại luôn. không báo lỗi cụ thể nào cả. Mong mọi người giúp đỡ.
    Mình dùng windows 7, compile bằng CFree 5...

    Nguyên lỗi:

    C Code:
    1. #include<stdio.h>
    2.  #include<conio.h>
    3.  #include<string.h>
    4.  
    5.  
    6. struct tt{
    7.     int stt;
    8.     char masv[10];
    9.     char ten[60];
    10.     int namsinh;
    11.     short int thangsinh, ngaysinh;
    12.     char quequan[255];
    13.     float mon_nc[7];
    14.     int mon_tc[7];
    15.     float tb_nc, tb_tc;
    16.   };
    17.  
    18. int montinchi[7]; int tongtinchi;
    19. FILE *f;
    20. //----------------------------------------------------------------------
    21.  
    22. int main (){
    23.     struct tt sv;
    24.     int n, i, k;
    25.     tongtinchi = 6;
    26.     for (i = 1; i <=6; i++){ montinchi[i] = 1;};
    27.     //struct tt sv = {0,0,"",0,0,0,"",0,0,0,0,0,0,0,0,0,0,0,0,0.0,0.0};
    28.     if ((f=fopen("dulieusv.txt","rb+"))== NULL){
    29.         printf("Loi: Khong the mo file. \n");
    30.     }
    31.     else{
    32.         printf("\nNhap so luong thong tin sinh vien can nhap ban dau: ");
    33.         scanf("%d", n);
    34.         for (i = 1; i <= n; i++){
    35.             sv.stt = i;
    36.             printf("\nNhap ma sinh vien: "); gets(sv.masv);
    37.             printf("\nMoi nhap ten sinh vien: "); gets(sv.ten);
    38.             printf("\nMoi nhap nam sinh sinh vien: "); scanf ("%d", &sv.namsinh);
    39.             printf("\nMoi nhap thang sinh sinh vien: "); scanf("%d", &sv.thangsinh);
    40.             printf("\nMoi nhap ngay sinh sinh vien: "); scanf("%d", &sv.ngaysinh);
    41.             printf("\nNhap que quan sinh vien: "); gets(sv.quequan);
    42.             //-----------------------------------------------------
    43.             for (k = 1; k<=6; k++){
    44.             printf("\nNhap diem mon %d he so 10: ", k); scanf("%f", &sv.mon_nc[k]);
    45.             if ((sv.mon_nc[k]>=8.5) && (sv.mon_nc[k]<=10)) {
    46.                 sv.mon_tc[k] = 4;
    47.             }
    48.             else{
    49.                 if ((sv.mon_nc[k]>=7) && (sv.mon_nc[k] <=8.4)){
    50.                     sv.mon_tc[k] = 3;
    51.                 }
    52.                 else{
    53.                     if ((sv.mon_nc[k]>=5.5) && (sv.mon_nc[k] <=6.9)){
    54.                         sv.mon_tc[k] = 2;
    55.                     }
    56.                     else{
    57.                         if ((sv.mon_nc[k]>=4) && (sv.mon_nc[k] <=5.4)){
    58.                             sv.mon_tc[k] = 1;
    59.                         }
    60.                         else sv.mon_tc[k] = 0;
    61.                     }
    62.                 }
    63.             }
    64.             sv.tb_nc = 0;
    65.             for (k=1; k<=6; k++){
    66.                 sv.tb_nc = sv.tb_nc + sv.mon_nc[k]*montinchi[k];
    67.             }
    68.             sv.tb_nc = sv.tb_nc / tongtinchi;
    69.             sv.tb_tc = 0;
    70.             for (k=1; k<=6; k++){
    71.                 sv.tb_tc = sv.tb_tc + sv.mon_tc[k]*montinchi[k];
    72.             }
    73.             sv.tb_tc = sv.tb_tc / tongtinchi;
    74.             }
    75.             //-----------------------------------------------------
    76.             fseek (f, (sv.stt - 1)*sizeof(struct tt),SEEK_SET);
    77.             fwrite (&sv, sizeof(struct tt), 1, f);
    78.         }
    79.     }
    80.     fclose(f);
    81.     return 0;
    82. }
    Đã được chỉnh sửa lần cuối bởi tuansaker3291 : 17-11-2011 lúc 07:40 PM.

  2. #2
    Ngày gia nhập
    03 2011
    Nơi ở
    Bình Dương, Hồ Chí Minh
    Bài viết
    392

    Trích dẫn Nguyên bản được gửi bởi tuansaker3291 Xem bài viết
    Mọi người giúp em kiểm tra xem code này sai ở đâu ạ? chỉ là nhập các thông tin của một struct rùi ghi struct đó ra file kiểu trực tiếp để có thể truy cập trực tiếp nhằm xử lý sau này.
    Chương trình chỉ chạy được đến nhập số lượng bản ghi ban đầu thì hiện ra một thông báo ngắt chương trình của windows, và chương trình dừng lại luôn. không báo lỗi cụ thể nào cả. Mong mọi người giúp đỡ.
    Mình dùng windows 7, compile bằng CFree 5...

    Nguyên lỗi:

    Code:
    printf("\nNhap so luong thong tin sinh vien can nhap ban dau: ");
    scanf("%d", n);
    hàm scanf....phải là &n chứ

  3. #3
    Ngày gia nhập
    08 2011
    Bài viết
    36

    hi. Đúng rùi, cảm ơn bạn nhiều, mình ngốc quá mất.. hix

    Nhưng giờ lại phát sinh lỗi.
    Nó bỏ qua dòng lệnh: printf("\nNhap ma sinh vien: "); gets(sv.masv);

    hix

  4. #4
    Ngày gia nhập
    03 2011
    Nơi ở
    Bình Dương, Hồ Chí Minh
    Bài viết
    392

    Trích dẫn Nguyên bản được gửi bởi tuansaker3291 Xem bài viết
    hi. Đúng rùi, cảm ơn bạn nhiều, mình ngốc quá mất.. hix

    Nhưng giờ lại phát sinh lỗi.
    Nó bỏ qua dòng lệnh: printf("\nNhap ma sinh vien: "); gets(sv.masv);

    hix
    trước dòng gets thêm dòng: fflush(stdin); xem

  5. #5
    Ngày gia nhập
    08 2011
    Bài viết
    36

    Mình đã làm thế này, nhưng đễn chỗ nhập điểm môn 1 thì nó ko chạy lại vòng for nữa. Nghĩa là nó chỉ hỏi điểm môn 1 thôi chứ ko hỏi cả 6 môn như vòng for đã cài đặt...hix

    C Code:
    1.  #include<stdio.h>
    2.  #include<conio.h>
    3.  #include<string.h>
    4.  
    5.  
    6. struct tt{
    7.     int stt;
    8.     char masv[10];
    9.     char ten[60];
    10.     int namsinh;
    11.     short int thangsinh, ngaysinh;
    12.     char quequan[255];
    13.     float mon_nc[7];
    14.     int mon_tc[7];
    15.     float tb_nc, tb_tc;
    16.   };
    17.  
    18. int montinchi[7]; int tongtinchi;
    19. FILE *f;
    20. //----------------------------------------------------------------------
    21.  
    22. int main (){
    23.     struct tt sv;
    24.     int n, i, k;
    25.     tongtinchi = 6;
    26.     for (i = 1; i <=6; i++){ montinchi[i] = 1;};
    27.     //struct tt sv = {0,0,"",0,0,0,"",0,0,0,0,0,0,0,0,0,0,0,0,0.0,0.0};
    28.     if ((f=fopen("dulieusv.txt","rb+"))== NULL){
    29.         printf("Loi: Khong the mo file. \n");
    30.     }
    31.     else{
    32.         printf("\nNhap so luong thong tin sinh vien can nhap ban dau: ");
    33.         scanf("%d", &n);
    34.         for (i = 1; i <= n; i++){
    35.             sv.stt = i;
    36.             printf("\nNhap ma sinh vien: "); fflush(stdin); gets(sv.masv);
    37.             printf("\nMoi nhap ten sinh vien: "); fflush(stdin); gets(sv.ten);
    38.             printf("\nMoi nhap nam sinh sinh vien: "); fflush(stdin);scanf ("%d", &sv.namsinh);
    39.             printf("\nMoi nhap thang sinh sinh vien: "); fflush(stdin);scanf("%d", &sv.thangsinh);
    40.             printf("\nMoi nhap ngay sinh sinh vien: "); fflush(stdin);scanf("%d", &sv.ngaysinh);
    41.             printf("\nNhap que quan sinh vien: "); fflush(stdin);gets(sv.quequan);
    42.             //-----------------------------------------------------
    43.             for (k = 1; k<=6; k++){
    44.             printf("\nNhap diem mon %d he so 10: ", k); fflush(stdin); scanf("%f", &sv.mon_nc[k]);
    45.             if ((sv.mon_nc[k]>=8.5) && (sv.mon_nc[k]<=10)) {
    46.                 sv.mon_tc[k] = 4;
    47.             }
    48.             else{
    49.                 if ((sv.mon_nc[k]>=7) && (sv.mon_nc[k] <=8.4)){
    50.                     sv.mon_tc[k] = 3;
    51.                 }
    52.                 else{
    53.                     if ((sv.mon_nc[k]>=5.5) && (sv.mon_nc[k] <=6.9)){
    54.                         sv.mon_tc[k] = 2;
    55.                     }
    56.                     else{
    57.                         if ((sv.mon_nc[k]>=4) && (sv.mon_nc[k] <=5.4)){
    58.                             sv.mon_tc[k] = 1;
    59.                         }
    60.                         else sv.mon_tc[k] = 0;
    61.                     }
    62.                 }
    63.             }
    64.             sv.tb_nc = 0;
    65.             for (k=1; k<=6; k++){
    66.                 sv.tb_nc = sv.tb_nc + sv.mon_nc[k]*montinchi[k];
    67.             }
    68.             sv.tb_nc = sv.tb_nc / tongtinchi;
    69.             sv.tb_tc = 0;
    70.             for (k=1; k<=6; k++){
    71.                 sv.tb_tc = sv.tb_tc + sv.mon_tc[k]*montinchi[k];
    72.             }
    73.             sv.tb_tc = sv.tb_tc / tongtinchi;
    74.             }
    75.             //-----------------------------------------------------
    76.             fseek (f, (sv.stt - 1)*sizeof(struct tt),SEEK_SET);
    77.             fwrite (&sv, sizeof(struct tt), 1, f);
    78.         }
    79.     }
    80.     fclose(f);
    81.     return 0;
    82. }

  6. #6
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    768

    Mặc định Nhập dữ liệu cho file truy cập trực tiếp, đang chạy trên win7 thì báo stoped và dừng chuơng trình

    Bạn nên xem vòng for (k = 1; i <= 6; k ++). Xem xem nó bắt đầu từ đâu và kết thúc từ đâu
    Chú ý: Không nên lạm dụng fflush (stdin)
    Hướng dẫn C++: https://www.youtube.com/watch?v=BwLodoQdoY4&list=PL1c9Uxlo-mplJDRGdONNupgo5OCBTyGGn

  7. #7
    Ngày gia nhập
    11 2010
    Bài viết
    7

    @tuansaker3219 thân yêu, bạn dùng trong vòng for với k là chỉ số, và trong vòng lặp đó bạn lại sử dụng k nên mặc nhiên k = 6 khi out khỏi vòng lặp con ra tới for ngoài cùng. sửa như sau:

    C Code:
    1.  #include<stdio.h>
    2.  #include<conio.h>
    3.  #include<string.h>
    4.  
    5.  
    6. struct tt{
    7.     int stt;
    8.     char masv[10];
    9.     char ten[60];
    10.     int namsinh;
    11.     short int thangsinh, ngaysinh;
    12.     char quequan[255];
    13.     float mon_nc[7];
    14.     int mon_tc[7];
    15.     float tb_nc, tb_tc;
    16.   };
    17.  
    18. int montinchi[7]; int tongtinchi;
    19. FILE *f;
    20. //----------------------------------------------------------------------
    21.  
    22. int main (){
    23.     struct tt sv;
    24.     int n, i, k, t, m;
    25.     tongtinchi = 6;
    26.     for (i = 1; i <=6; i++){ montinchi[i] = 1;};
    27.     //struct tt sv = {0,0,"",0,0,0,"",0,0,0,0,0,0,0,0,0,0,0,0,0.0,0.0};
    28.     if ((f=fopen("dulieusv.txt","rb+"))== NULL){
    29.         printf("Loi: Khong the mo file. \n");
    30.     }
    31.     else{
    32.         printf("\nNhap so luong thong tin sinh vien can nhap ban dau: ");
    33.         scanf("%d", &n);
    34.         for (i = 1; i <= n; i++){
    35.             sv.stt = i;
    36.             printf("\nNhap ma sinh vien: "); fflush(stdin); gets(sv.masv);
    37.             printf("\nMoi nhap ten sinh vien: "); fflush(stdin); gets(sv.ten);
    38.             printf("\nMoi nhap nam sinh sinh vien: "); fflush(stdin);scanf ("%d", &sv.namsinh);
    39.             printf("\nMoi nhap thang sinh sinh vien: "); fflush(stdin);scanf("%d", &sv.thangsinh);
    40.             printf("\nMoi nhap ngay sinh sinh vien: "); fflush(stdin);scanf("%d", &sv.ngaysinh);
    41.             printf("\nNhap que quan sinh vien: "); fflush(stdin);gets(sv.quequan);
    42.             //-----------------------------------------------------
    43.             for (k = 1; k<=6; k++){
    44.             printf("\nNhap diem mon %d he so 10: ", k); fflush(stdin); scanf("%f", &sv.mon_nc[k]);
    45.             if ((sv.mon_nc[k]>=8.5) && (sv.mon_nc[k]<=10)) {
    46.                 sv.mon_tc[k] = 4;
    47.             }
    48.             else{
    49.                 if ((sv.mon_nc[k]>=7) && (sv.mon_nc[k] <=8.4)){
    50.                     sv.mon_tc[k] = 3;
    51.                 }
    52.                 else{
    53.                     if ((sv.mon_nc[k]>=5.5) && (sv.mon_nc[k] <=6.9)){
    54.                         sv.mon_tc[k] = 2;
    55.                     }
    56.                     else{
    57.                         if ((sv.mon_nc[k]>=4) && (sv.mon_nc[k] <=5.4)){
    58.                             sv.mon_tc[k] = 1;
    59.                         }
    60.                         else sv.mon_tc[k] = 0;
    61.                     }
    62.                 }
    63.             }
    64.             sv.tb_nc = 0;
    65.             for (t=1; t<=6; t++){
    66.                 sv.tb_nc = sv.tb_nc + sv.mon_nc[k]*montinchi[k];
    67.             }
    68.             sv.tb_nc = sv.tb_nc / tongtinchi;
    69.             sv.tb_tc = 0;
    70.             for (m=1; m<=6; m++){
    71.                 sv.tb_tc = sv.tb_tc + sv.mon_tc[k]*montinchi[k];
    72.             }
    73.             sv.tb_tc = sv.tb_tc / tongtinchi;
    74.             }
    75.             //-----------------------------------------------------
    76.             fseek (f, (sv.stt - 1)*sizeof(struct tt),SEEK_SET);
    77.             fwrite (&sv, sizeof(struct tt), 1, f);
    78.         }
    79.     }
    80.     fclose(f);
    81.     return 0;
    82. }

    Test code::block 10.05

    hình output:

    Attached Thumbnails Attached Thumbnails Capture.JPG  

Các đề tài tương tự

  1. Một số máy Win7 bị "has stoped working" khi chạy chương trình MFC
    Gửi bởi nam_dkn trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 9
    Bài viết cuối: 29-12-2011, 09:07 AM
  2. Không truy cập webserver trên win7 từ máy khác được
    Gửi bởi hoicuibap trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 22-11-2011, 01:52 PM
  3. Làm sao loại bỏ tiến trình ngốn chíp trên Win7
    Gửi bởi nguyenduykhanh1986 trong diễn đàn Thắc mắc chung
    Trả lời: 0
    Bài viết cuối: 26-09-2011, 04:44 PM
  4. C#.Chương trình chạy được trên WinXP, không chạy được trên Win7, Vista
    Gửi bởi qhhqnavy trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 04-07-2011, 10:07 AM
  5. Không chạy được C++ trên win7 64bit
    Gửi bởi goldit trong diễn đàn Thắc mắc chung
    Trả lời: 2
    Bài viết cuối: 25-03-2010, 08:39 PM

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