[Hỏi] Tách chuỗi 12 chữ số trong C

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi GiaCatPhuc, 15/11/09.

  1. GiaCatPhuc

    GiaCatPhuc Legend of Zelda

    Tham gia ngày:
    4/11/02
    Bài viết:
    1,091
    Nơi ở:
    ニャチャン
    Có 1 dãy số 067800001019, làm thế nào để tách ra thành 2 dãy 067800 vào 001019.

    Cám ơn nhiều !!! :)
     
  2. thanhtungtnt

    thanhtungtnt シェンムー Ryo Hazuki Lão Làng GVN

    Tham gia ngày:
    23/8/06
    Bài viết:
    9,767
    Nơi ở:
    Balamb City
    Nếu dãy số lúc nào cũng 12 số thì :

    char a[100], b[100];
    for(int i=0; i<n/2; i++) //n là số phần tử của chuỗi số.
    {
    a = c //c là mảng chứa dãy số trên (kiểu char)
    }
    //sau khi chạy đến đây i dừng lại ở giữa (như dãy số trên thì lúc này i = 6)
    for(int j=i; j<n; j++)
    {
    b[j] = c[j]
    }

    Hết.

    PS: Viết xong mới thấy bác là Lão Làng. Chắc phải siêu lắm, thôi lần sau em chả dám múa rìu qua mắt thợ nữa đâu :-ss
     
  3. Bối Bối

    Bối Bối C O N T R A

    Tham gia ngày:
    20/2/06
    Bài viết:
    1,859
    Nơi ở:
    Ha Noi, Vietnam,
    Mã:
    int i,j=0;
    for(i=0;i<n;i++)
    {
         if(i<n/2)
                a[i]=c[i];
         else
         {    
               b[j]=c[i];
               j++;
         }
    }
    @thanhtung: chuỗi b của bạn sẽ bắt đầu từ element thứ 6
    nếu in ra chắc sẽ thành #$!^@$001019
     
  4. thanhtungtnt

    thanhtungtnt シェンムー Ryo Hazuki Lão Làng GVN

    Tham gia ngày:
    23/8/06
    Bài viết:
    9,767
    Nơi ở:
    Balamb City
    Uh, đúng rồi. Giờ mới thấy. :D
     
  5. Fireemblem&me

    Fireemblem&me Dragon Quest

    Tham gia ngày:
    22/3/07
    Bài viết:
    1,424
    Nơi ở:
    HCM
    nếu lỡ dãy số này là string thì sao, câu hỏi bạn kia mơ hồ và mấy bạn trả lời cũng ko hợp lý lắm vì n ở đâu ra nhỉ
    theo mình chắc là đưa vào string hoặc long int rồi chia đôi chuỗi hoặc số ra (vậy có lẽ tổng quát hơn)

    còn nếu là dãy số thì đương nhiên n sẽ tồn tại và làm y như bạn trên ;))
     
  6. Bối Bối

    Bối Bối C O N T R A

    Tham gia ngày:
    20/2/06
    Bài viết:
    1,859
    Nơi ở:
    Ha Noi, Vietnam,
    bạn chưa hiểu rồi !
    tùy theo cách viết thôi.
    mình thì bổ sung chữa bài bạn thanhtung thôi, mà theo bài thanhtung thì nó là chuỗi rồi đó.
    và mình nghĩ chuỗi số ở đây dùng để tách chứ ko phải để tính toán nên dùng kiểu chuỗi là đúng rồi chứ đừng dùng kiểu số (int hay long int) vì đằng nào thì cũng phải biến nó thành chuỗi mới tách ...

    bạn ko biết trong C ko có kiểu string sao? string ở đây là mảng các kí tự mà thôi
    n thì khi viết bạn phải tự biết lấy n = strlen(char* str) chứ :)
     
  7. Fireemblem&me

    Fireemblem&me Dragon Quest

    Tham gia ngày:
    22/3/07
    Bài viết:
    1,424
    Nơi ở:
    HCM
    uhm thì nếu là chuỗi thì cách bạn là ok nhưng nếu là longint thì có cách khác ^^ (dùng /, %)
    mà sao cũng được bạn ý cũng ko học chuyên lập trình chắc chỉ là xl chuỗi thôi

    hôm đọc bài này là khuya quá buồn ngủ nên nhầm 1 tí ^^ về chuỗi string ^^
     
  8. Magic_fantasy

    Magic_fantasy Mr & Ms Pac-Man

    Tham gia ngày:
    22/6/06
    Bài viết:
    213
    Tách Chuỗi thì đơn giản thôi, trong C có sẵn thư viện string.h dùng để xử lí chuỗi :
    #include<string.h>
    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    char s[255],s1[100];
    gets(s);//Nhap chuoi s
    strcpy(s1,s+6);//copy từ vị trí kí tự thứ 6 trong chuỗi s vào chuỗi s1
    s[6]='\0';//Cho kí tự thứ 6 bằng NULL tức là chuỗi s kết thúc tại vị trí s[5].
    puts(s);
    printf("\n");
    puts(s1);
    getch();
    }
     
  9. cakom

    cakom Youtube Master Race

    Tham gia ngày:
    29/10/09
    Bài viết:
    24
    067800001019 thì không thể là int hay longint được đúng không bạn :D
     
  10. daish

    daish Donkey Kong

    Tham gia ngày:
    5/11/06
    Bài viết:
    347
    Nơi ở:
    Network tower
    Cách này hay đấy , rất hay cho người bắt đầu vote 1 phiếu. ;)
     
  11. cakom

    cakom Youtube Master Race

    Tham gia ngày:
    29/10/09
    Bài viết:
    24
    #include <string.h>
    #include <stdlib.h>

    main(){
    const char* string= "067800001019";
    char s1[10],s2[10];
    strncpy(s1, string, 6);
    strncpy(s2, string+6, 6);
    printf("%s\n", s1);
    printf("%s\n", s2);
    return 0;
    }
     

Chia sẻ trang này