30/09/2018, 19:28

Lỗi control may reach end of non-void function trong XCODE

chào các anh , em mới tập tành học C làm bài quản lý sinh viên mà cái xcode nó cứ bắt em trả về giá trị cho cái hàm nhập mà em trả về cái gì cũng không fix được , em còn thiếu kinh nghiệm nên muốn post code lên đây các anh sửa giúp em , em cám ơn ạ

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


typedef struct sinhvien{
    char ht[30];
    int tuoi;
    struct sinhvien *next;
} sv;

sv nhap(sv *p){
    sv *pdau;
    int i=0,tuoi;
    char ten[30];
    p=NULL;
    pdau=NULL;
    while(i){
        printf("
 nhập tên : ");
        fflush(stdin);
        gets(ten);
        
        if(ten[0] == ''){
            return *pdau;
        }
        if(pdau == NULL){ // con trỏ pdau chưa trỏ vào đâu
            p=(sv *)malloc(sizeof(sv)); // cấp phát bộ nhớ động cho con trỏ p để lưu thông tin
            pdau=p; // cho pdau trỏ tới p
            
        }
        else{
            (*p).next=(sv *)malloc(sizeof(sv)); // cấp phát bộ nhớ động cho cấu trúc tiếp theo
            p=(*p).next; // cho p trỏ tới cấu trúc mới để nhập thêm thông tin
        }
        strcpy((*p).ht,ten);
        
        printf("
 nhập tuổi : ");
        (*p).tuoi=tuoi;
        
        (*p).next = NULL; // không trỏ p tới cấu trúc tiếp theo nữa
    }
}

void xuat(sv *p,sv *pdau)
{
    p=pdau;
    while(p!= NULL){
            printf("
 %30s  |    %3d",(*p).ht, (*p).tuoi);
        p=(*p).next;
    }

}

void manin()
{
    sv *pdau,*p;
    char ch=';';
    while (ch != 27){
        printf("
 
 Chọn công việc ( ấn ESC để thoát) : ");
        printf("
 1. Nhập ");
        printf("
 2. Xuất ");
        printf("
 3. Xoá ");
        printf("
 Thêm ");
        ch=getchar();
        
        switch(ch){
            case '1': {
                system("cls");
                nhap(p);
                break;
            }
            case '2' :{
                system("cls");
                xuat(p,pdau);
                break;
            }
        }
    }
}

Việt Dũng Lê viết 21:42 ngày 30/09/2018

uppp các anh giúp em với ạ

Quân viết 21:37 ngày 30/09/2018

Hàm nhap return đâu, k cần return thì cho void chứ sao lại để sv vào đó

Việt Dũng Lê viết 21:32 ngày 30/09/2018

hàm nhập đấy dùng để nhập thông tin vào p theo cái cấu trúc sv , không bỏ được cái sv đâu bác ạ

Quân viết 21:32 ngày 30/09/2018

Thì bạn return cái đã nhập ra

Việt Dũng Lê viết 21:39 ngày 30/09/2018

thanks bác nhé, nhưng mà em chưa hiểu cái hàm nhập đấy em return mấy cái rồi ko được , bác thử bỏ vào ide giúp em với ^^

Quân viết 21:42 ngày 30/09/2018

bạn code cái gì đây…

Việt Dũng Lê viết 21:39 ngày 30/09/2018

code bài tập quản lý sinh viên bác ạ

Quân viết 21:38 ngày 30/09/2018

bạn tham khảo code mình nhé, code clean hơn nữa nhé

#import <Foundation/Foundation.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct sinhvien{
    char ht[30];
    int tuoi;
    struct sinhvien *next;
} sv;

sv* nhap(sv *sinhvien){
    sv *newSinhVien;
    newSinhVien = (sv *)malloc(sizeof(sv));
    
    newSinhVien->tuoi = 10;
    
    //... do enter sinh vien stuff here
    
    // after enter sinh vien finish we have a new sinh vien instance
    
    // do link new sinh vien into chain
    
    if (sinhvien != NULL) {
        sinhvien->next = newSinhVien;
    }
    
    return newSinhVien;
}

void xuat(sv *rootSV){
    sv *currentSV = NULL;
    currentSV = rootSV;
    while (currentSV != NULL) {
        printf("\n %30s  |    %3d",currentSV->ht, currentSV->tuoi);
        currentSV = currentSV->next;
    }
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        sv *rootSV = NULL;
        sv *currentSV = NULL;
        
        char ch=';';
        while (ch != 27){
            printf("\n \n Chọn công việc ( ấn ESC để thoát) : ");
            printf("\n 1. Nhập ");
            printf("\n 2. Xuất ");
            printf("\n 3. Xoá ");
            printf("\n Thêm ");
            ch = getchar();
            switch(ch){
                case '1': {
                    system("cls");
                    currentSV = nhap(currentSV);
                    if (rootSV == NULL) {
                        rootSV = currentSV;
                    }
                    break;
                }
                case '2' :{
                    system("cls");
                    xuat(rootSV);
                    break;
                }
            }
        }
    }
    return 0;
}
Việt Dũng Lê viết 21:37 ngày 30/09/2018

em cám ơn bác đã nhiệt tình giúp em
em sẽ xem lại vào báo cho bác ạ ^^

Bài liên quan
0