01/10/2018, 11:22

Static mảng trong C

em có 1 vấn đề là khi tạo mảng static int thì giá trị khởi tạo cho nó là 0. Giả sử mảng có 10 phần tử. Đề bài yêu cầu xuất tất cả các phần tử nhập vào mà em nhập vào chỉ 5 phần tử. Khi nhập ko xác định số phần tử nhập vào. Khi nhập vào thì có 1 phần tử là 0. --> làm sau giải quyết vấn đề này?

rogp10 viết 13:23 ngày 01/10/2018

Số 0 nếu là bạn tự cho thì đổi nhé. Nếu không được thì thêm câu hỏi yes/no nữa (thực ra người ta dùng tổ hợp phím thôi).

nghia viết 13:38 ngày 01/10/2018

ok anh nhưng có 1 vần đề ngặc là khi em giả sử số em đồi là con số khác mà em lại nhập trình nó thì sau? Làm sau xuất ra những con số mình đã nhập!

Trần Hoàn viết 13:23 ngày 01/10/2018

Cho mình hỏi kỹ hơn về đề bài: Bạn nhập không xác định số phần tử nhập vào, vậy thì biết khi nào nhập xong? (Mình đoán là bạn định nhập đến khi nhập 0 thì dừng lại).

nghia viết 13:22 ngày 01/10/2018

thực chất nó là đọc file ra bạn!

Student X viết 13:31 ngày 01/10/2018

cho một biến count = 0. lúc nào nhập vào thì tăng biến count lên 1?

nghia viết 13:26 ngày 01/10/2018
 temp = strtok(tmp, " ");
    while(temp != NULL){
        content[i] = atoi(temp);
        temp = strtok(NULL, " ");
        i++;
     }

content[512] mà chỉ đọc ra 10 phần tử!

Trần Hoàn viết 13:34 ngày 01/10/2018

Mình nghĩ bản thân vấn đề là việc chọn sai kiểu dữ liệu (mảng tĩnh). Khi đã dùng int[] thì không có cách nào tách riêng ra 1 số, vừa là dấu hiệu vừa là giá trị

Bạn nên tính theo hướng khác, một là mảng động, hai là kiểu dữ liệu thay đổi được kích thước.

nghia viết 13:38 ngày 01/10/2018

ok Bạn! Mình đang suy nghĩ biến mảng local thành mảng toàn cục quá chứ khởi tạo ra khỏi vùng hàm cho nó xuất ra nó thông báo core dump!

nghia viết 13:32 ngày 01/10/2018
int ReadFileNumber(const char* link, const char* mode, int** content){
    FILE* file;
    char* tmp, *temp;
    int i;

    i = 0;
    file = OpenFile(link, mode);
    tmp = (char*)malloc(4096);
    *content = (int*)malloc(512 * sizeof(int));

    if(file != NULL){
        fgets(tmp, 4096, file);
        fclose(file);
    }
    else{
        puts("Cann't open file!");
        return FALSE;
    }
    
    temp = strtok(tmp, " ");
    
    while(temp != NULL){
        *(*content + i) = atoi(temp);
        temp = strtok(NULL, " ");
        i++;
    }

    return i;
}

Code mình viết như thế này mấy bác thầy sau?

Bài liên quan
0