User Tag List

+ Trả lời chủ đề
Hiện kết quả từ 1 tới 3 của 3

Chủ đề: mảng ký tự VC++ ?

  1. #1
    svBK's Newbie
    Tham gia ngày
    Aug 2008
    Bài gửi
    10

    Mặc định mảng ký tự VC++ ?

    mình có đoạn code ở main:

    FILE * f, *t;
    test a;

    char str_b9 [9], str_b4 [4], str_b2 [2]; //trường hợp 1


    //char str_b9 [9], str_b2 [2], str_b4 [4]; //trường hợp 2

    int hour, minute, year, month, date;
    float second;

    char * buf, st [1000];
    f = fopen ("test.txt","a");
    t = fopen ("buf.txt","r");

    //buf.txt có 1 dòng đầu chứa: " at Thursday, January 03, 2008 11:16:50.946807; Size 33 Octets"

    fgets (st,1000,t);
    buf = st;

    //st=" at Thursday, January 03, 2008 11:16:50.946807; Size 33 Octets"
    char * A_month [12] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Octo", "Nov", "Dec"};
    for (int i = 0; i < 12; i++)
    if (strstr (buf, A_month [i])) {
    month = i + 1;
    buf = strstr (buf, A_month [i]);
    buf = strchr (buf, ' ') + 1; //03, 2008 11..
    strncpy (str_b2,buf,2);
    date = atoi(str_b2);
    buf = strchr (buf, ' ') + 1; //2008 11:16...
    strncpy (str_b4,buf,4);
    year = atoi (str_b4);
    buf = strchr (buf, ' ') + 1; //11:16:50....
    strncpy (str_b2,buf,2);
    hour = atoi (str_b2);
    buf = strchr (buf, ':') + 1; //16:50.9468..
    strncpy (str_b2,buf,2);
    minute = atoi (str_b2);
    buf = strchr (buf, ':') + 1; //50.946807; S..
    strncpy (str_b9,buf,9);
    second = atof (str_b9);
    }
    fprintf (f,"month:%i, date:%i, year:%i, hour:%i, minute:%i, second:%f\n",month,date,year,hour,minute,second);

    fclose (f);
    fclose (t);

    ...

    => trường hợp 1 sẽ cho kết quả là:
    month:1, date, year:2008, hour:11, minute:16, second:45.261089

    trường hợp 2 lại cho kết quả là:
    month:1, date, year:200803, hour:11, minute:16, second:45.261089

    => mình thắc mắc tại sao thứ tự khai báo mảng ký tự lại ảnh hưởng đến kết quả ?
    thật ko thể hiểu nổi cái str_b4 có 4 ký tự mà sao ở trường hợp 2 nó lại biến thành 6 ký tự (ký tự đuôi của nó là str_b2)

    ?

  2. #2
    svBK's Newbie
    Tham gia ngày
    Aug 2008
    Bài gửi
    10

    Mặc định

    tròi trường mình có vẻ nhạt nhòa mấy câu hỏi kiểu này quá

    lại quay lại tự trả lời vậy

    qua vài lần thử ở các chương trình khác => khai báo mảng char ở C++ làm nẩy sinh điều này: 2 mảng coi như 2 chuỗi nhớ nằm kề nhau ..

    mà mình vẫn ko hiểu - do C ++ bị hổng ở đây hay do C ++ quá linh động và phải thao tác thêm để phân rõ 2 vùng nhớ này ?

  3. #3
    HUT's Student Avatar của binh1502
    Tham gia ngày
    Aug 2008
    Bài gửi
    112

    Mặc định

    Quote Nguyên văn bởi damphibk Xem bài viết
    tròi trường mình có vẻ nhạt nhòa mấy câu hỏi kiểu này quá

    lại quay lại tự trả lời vậy

    qua vài lần thử ở các chương trình khác => khai báo mảng char ở C++ làm nẩy sinh điều này: 2 mảng coi như 2 chuỗi nhớ nằm kề nhau ..

    mà mình vẫn ko hiểu - do C ++ bị hổng ở đây hay do C ++ quá linh động và phải thao tác thêm để phân rõ 2 vùng nhớ này ?
    Có vẻ bạn đã tự trả lời câu hỏi của mình rồi
    Còn câu hỏi sau thì bạn xem lại phần cấp bộ nhớ cho mảng nhé.

+ Trả lời chủ đề

Thông tin chủ đề

Users Browsing this Thread

Hiện có 1 người đọc bài này. (0 thành viên và 1 khách)

Từ khóa (Tag) của chủ đề này

Quyền viết bài

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


About svBK.VN

    Bách Khoa Forum - Diễn đàn thảo luận chung của sinh viên ĐH Bách Khoa Hà Nội. Nơi giao lưu giữa sinh viên - cựu sinh viên - giảng viên của trường.

Follow us on

Twitter Facebook youtube