30/09/2018, 18:33

Hướng dẫn đọc và ghi file

MÌnh đang làm các thuật toán sắp xếp bằng danh sách liên kết
-MÌnh có file input như sau:
3 0 1 0 1 9 9 3[ext1test2]0 4 1 0 1 9 9 3[ext1test3]9 1 8 2 7 3 6 4 5[ext1test4]30 10 17 2 4 10[ext1test5]8 9 0 6 7 8 4 5 6 3 4 5 1 2 3[ext2test1]3 0 1 0 1 9 9 3[ext2test2]0 4 1 0 1 9 9 3[ext2test3]9 1 8 2 7 3 6 4 5[ext2test4]30 10 17 2 4 10[ext2test5]8 9 0 6 7 8 4 5 6 3 4 5 1 2 3

-Mình muốn sau khi sắp xếp xong thì file output như sau:
[ext1test1]0 0 1 1 3 3 9 9[ext1test2]0 0 1 1 3 4 9 9[ext1test3]1 2 3 4 5 6 7 8 9[ext1test4]2 4 10 10 17 30[ext1test5]0 1 2 3 3 4 4 5 5 6 6 7 8 8 9[ext2test1]0 0 1 1 3 3 9 9[ext2test2]0 0 1 1 3 4 9 9 [ext2test3]1 2 3 4 5 6 7 8 9[ext2test4]2 4 10 10 17 30[ext2test5]0 1 2 3 3 4 4 5 5 6 6 7 8 8 9

[ext1test1] đến [ext1test5] là 5 bộ test của thuật toán 1,[ext2test1]->[ext2test5]là 5 bộ test của thuật toán 2
Mọi người chỉ mình cách đọc file ra từng bộ test và ghi lại vào file khác từng bộ test với .Mong mọi người giúp đỡ ^^

Khải Phan viết 20:40 ngày 30/09/2018

Bộ [ext1test1] sao mình không thấy nhỉ? Bộ này bạn ghi thiếu vào đầu file đúng không?
Mình nghĩ bạn dùng regular expression để đọc file này, detect tên và mảng giá trị cần sắp xếp.
Sau đó sắp xếp trên mảng đã detect được và ghi ra output.

... viết 20:46 ngày 30/09/2018

Code ở dưới mình chỉ mới đọc từ stdin vào 2 chuỗi s và s2.
Chuỗi s sẽ lưu các tiền tố như [ext1test1], [ext2test5] …
Chuỗi s2 lưu dãy số phía sau tiền tố.

Ideone.com

Ideone.com

Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.

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

int main(void) {
    // your code goes here
    char *s = (char*)malloc(sizeof(char) * 1000);
    char *s2 = (char*)malloc(sizeof(char) * 1000);
    
    while(!feof(stdin))    {
        //Doc cac tien to cua day so
        scanf("%[^]]", s);
        char temp;
        scanf("%c", &temp);
        strcat(s, (char*)(void*)&temp);
        printf("%s", s);
        
        //Doc day so
        scanf("%[^\[]", s2);
        printf("%s\n", s2);
    }
    
    return 0;
}

Kết qủa ra được:
[ext1test1]3 0 1 0 1 9 9 3
[ext1test2]0 4 1 0 1 9 9 3
[ext1test3]9 1 8 2 7 3 6 4 5
[ext1test4]30 10 17 2 4 10
[ext1test5]8 9 0 6 7 8 4 5 6 3 4 5 1 2 3
[ext2test1]3 0 1 0 1 9 9 3
[ext2test2]0 4 1 0 1 9 9 3
[ext2test3]9 1 8 2 7 3 6 4 5
[ext2test4]30 10 17 2 4 10
[ext2test5]8 9 0 6 7 8 4 5 6 3 4 5 1 2 3

Để đưa mấy bộ test trên vào danh sách liên kết đơn thì bạn tạo 2 trường là

//Chỉ mang tính minh họa
struct Test   {
    char prefix[10];
    int numbers[100];
};

Bạn sẽ phải đọc dãy số từ chuỗi s2 vào numbers.
Đọc bằng cách này:

stackoverflow.com
kal

Reading "integer" size bytes from a char* array.

c++, c, endianness
asked by kal on 06:34AM - 13 Feb 09

Tu Phan viết 20:36 ngày 30/09/2018

Mình ghi thiết bộ[ext1test1]detect tên và mảng giá trị cần sắp xếp là sau bạn ?Bạn nói rỏ hơn được không mình mới học nên cũng rất yếu

Tu Phan viết 20:37 ngày 30/09/2018

CÁm ơn anh/bạn mình đang nghiên cứu mà vẫn chưa hiểu có gì xin bạn giúp đỡ

Bài liên quan
0