Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Linux Programming | Cắt chuỗi thành nhiều chuỗi con

  1. #1
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định Linux Programming | Cắt chuỗi thành nhiều chuỗi con

    Yêu cầu nhập một chuỗi sau đó in ra dưới dạng từng dòng:
    vd: nhập tran van anh thì hiển thị :
    tran
    van
    anh
    Cái này rất dễ và có nhiều cách làm lắm. Sau đây Dreaminess dùng hàm strtok để giải quyết nhanh bài toán của bạn.

    Code:
    #include <string.h>
     #include <stdio.h>
    
     int main(void)
     {
        int i;
        char *p,input[32] = "Tran Van Anh va Trieu The Hung";
    
        	p = strtok(input, " ");
    	printf("%s\n", p);
    
    	for(i=1;i++;i<strlen(input))
            {
        		p = strtok(NULL, " ");
    		if (p)   printf("%s\n", p);
            }
        return 0;
     }
    Đây chỉ là một cách tham khảo. Nó chưa phải là cách tối ưu.
    Nếu yêu cầu cho phép dùng hàm có sẵn thì cách này là nhanh, và ngắn.
    Đã được chỉnh sửa lần cuối bởi langman : 06-07-2009 lúc 06:01 PM. Lý do: bài viết này còn quá sơ giản, chưa toát lên được nhiều , xin phép cho langman move tới box bài tập, các bạn mới nghiên cứu qu
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  2. #2
    No Avatar
    zeno Khách

    Bạn tham khảo đoạn code này xem
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    void main()
    {
    	char ch[20];
    	int i,len;
    	printf("\nNhap vao mot chuoi : ");
    	gets(ch);
    	len = strlen(ch);
    	for(i=0;i<len;i++)
    	{
    	  if(ch[i]!=' ')
    		  printf("%c",ch[i]);
    	  else
    		  printf("\n");
    	}
    	getch();
    }

  3. #3
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Dùng string là tốt nhất nếu bạn học C++

  4. #4
    Ngày gia nhập
    09 2007
    Bài viết
    1

    @ Dreaminess : Em chỉ mới học C nên chưa biết hàm strtok có tác dụng gì. Pác có thể giải thích giùm em hok? thanks!

  5. #5
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Sữa lại yêu cầu đề bài một chút, thay vì in ra màn hình, nhờ các cậu giúp cho, hàm trả về 1 array of string, số phần tử (string) của array đó, test kỹ cho các trường hợp:
    - Chuỗi rỗng.
    - Chuỗi toàn khoãng trắng,
    - Chuỗi chứa ký tự tab (isspace = true).
    - Chuỗi có 1 hay nhiều khoãng trắng ở đầu hay cuối chuỗi (coi chừng trường hợp này với hàm strtok)
    - Chuỗi có các work phân cách không phải = 1 khoãng trắng mà nhiều khoãng trắng.
    - Modify thành version nâng cao, parse 1 chuỗi theo ký tự phân cách yêu cầu, không phải là khoãng trắng nữa, vd: |,;^-_/\.... (vân vân và vân vân)

  6. #6
    Ngày gia nhập
    12 2007
    Nơi ở
    Tp.HCM
    Bài viết
    24

    Mặc định Linux Programming | Cắt chuỗi thành nhiều chuỗi con

    Trích dẫn Nguyên bản được gửi bởi tranmanhlinh Xem bài viết
    @ Dreaminess : Em chỉ mới học C nên chưa biết hàm strtok có tác dụng gì. Pác có thể giải thích giùm em hok? thanks!
    Bạn có thể vào trang này để xem thêm hàm strtok, kèm theo ví dụ: http://www.cppreference.com/stdstring/strtok.html

  7. #7
    Ngày gia nhập
    02 2013
    Bài viết
    12

    Mặc định Cắt thành nhiều chuỗi

    Trích dẫn Nguyên bản được gửi bởi Kevin Hoang Xem bài viết
    Cái này rất dễ và có nhiều cách làm lắm. Sau đây Dreaminess dùng hàm strtok để giải quyết nhanh bài toán của bạn.

    Code:
    #include <string.h>
     #include <stdio.h>
    
     int main(void)
     {
        int i;
        char *p,input[32] = "Tran Van Anh va Trieu The Hung";
    
        	p = strtok(input, " ");
    	printf("%s\n", p);
    
    	for(i=1;i++;i<strlen(input))
            {
        		p = strtok(NULL, " ");
    		if (p)   printf("%s\n", p);
            }
        return 0;
     }
    Đây chỉ là một cách tham khảo. Nó chưa phải là cách tối ưu.
    Nếu yêu cầu cho phép dùng hàm có sẵn thì cách này là nhanh, và ngắn.
    Thế ví dụ em muốn làm bài mà nhập vào một chuỗi như Doc lap tu do và phải in ra xâu do tu lap Doc thì làm sao

Các đề tài tương tự

  1. Trả lời: 1
    Bài viết cuối: 29-06-2011, 12:02 AM
  2. Tách 1 chuỗi thành nhiều chuỗi nhỏ theo ký tự đặc biệt
    Gửi bởi plus trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 04-06-2011, 04:29 PM
  3. Xử lý chuỗi trên C | Tách chuỗi thành nhiều chuỗi?
    Gửi bởi Hunter123 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 11-07-2009, 11:45 AM
  4. Đổi hình con trỏ chuột trong lập trình C | Change mouse pointer in C programming???
    Gửi bởi 935017555 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 16-05-2009, 03:49 PM
  5. Làm việc với kí tự và chuỗi trong lập trình C trên Linux [Linux Programming]
    Gửi bởi Xcross87 trong diễn đàn Thủ thuật, Tutorials và Mã nguồn
    Trả lời: 4
    Bài viết cuối: 02-10-2007, 11:33 PM

Quyền hạn của bạn

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