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

Đề tài: [C] Không hiểu rõ về hàm strcopy, mong nghe giải thích chi tiết

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

    Lightbulb [C] Không hiểu rõ về hàm strcopy, mong nghe giải thích chi tiết

    Chương trình giả lập hàm strcpy() (shinichi_haha)
    hàm này dùng chép chuỗi, nhưng mình không hiểu chi tiết về nó, mong được chỉ giúp. cảm ơn các bạn. cần rất gấp.
    Code:
    void strCopy2(char *s1, char *s2)
    {
    	while (*s2++ = *s1++);	
    }
    Đã được chỉnh sửa lần cuối bởi shinichi_haha : 25-11-2006 lúc 05:36 PM.

  2. #2
    Ngày gia nhập
    07 2006
    Bài viết
    121

    Code:
    {
    while (*s2++ = *s1++);
    }
    Ở đây không có gì khó hiểu cả:
    Đầu tiên: Ta phải hiểu chuổi là một mảng các phần tử kiểu char và được kết thúc bằng số 0.
    còn vòng while như mình đã đề cập đến trong các kiến thức cơ bản của c.
    http://forums.congdongcviet.com/showthread.php?t=409
    Cụ thể ở đây mình nhắc lại.
    Code:
    while(A)
    {
    S;
    }
    Thực hịên Các lệnh S đến khi mệnh đề A sai hay A là một giá trị bằng 0.
    Cụ thể ví dụ cân lệnh gán *s1=*s2 sau đó s1,và a2 tiếp tục trỏ đến phần tiếp theo của mảng đến khi *s2=0 và được gán cho *s1 rồi thóat khỏi vòng while.
    À Nếu câu lệnh A=B thì sau câu lệnh một giá trị sẽ đựơc trả về giá trị đó nằm bên trái dấu bằng tức A. Chính vì lý do đó mà ta luôn viết được A=B=C.Do đó *s1++=*s2++ luôn có gía trị trả về là *s1 nếu giá trị này bằng 0 tức chuổi s2 hết và sẽ thóat vòng while.
    Đã được chỉnh sửa lần cuối bởi shinichi_haha : 17-11-2006 lúc 06:56 PM.

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

    Trích dẫn Nguyên bản được gửi bởi def
    void strCopy2(char *s1, char *s2)
    {
    while (*s2++ = *s1++);
    }
    Phải nói rằng lâu lắm mới gặp được câu lệnh hay như thế này (mấy lệnh kiểu này thường thấy ở kernel unix/linux). Ngày nay các sp thương mại không mấy khi chấp nhận kiểu viết thiếu tường minh như thế.
    Về nguyên tắc bạn shinichi giải thích rất chính xác rồi, mình chỉ xin góp ý chút cho dễ hiểu hơn:
    Code:
    void strCopy2(char *s1, char *s2)
    {
    	int ret_val;
    	while ((retval = (*s2++ = *s1++)) != 0) {};	
    }
    Đã được chỉnh sửa lần cuối bởi longdh : 17-11-2006 lúc 09:26 PM.

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

    cảm ơn các bạn mình hiểu rõ rồi.

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

    Topic đã được khóa

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

  1. Bài tập C Em đang cần gấp bài tập C vừa và khó có lời giải chi tiết, mong mọi người share link giúp e.tks
    Gửi bởi PPA_version2.0 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 13
    Bài viết cuối: 08-04-2012, 04:21 PM
  2. code lại các hàm strlen, strcat, strcopy. Giúp mình?
    Gửi bởi andriy cross 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: 03-04-2012, 02:38 PM
  3. Học tiếng Anh qua nghe cho mọi trình độ
    Gửi bởi bou123 trong diễn đàn English for IT | Tiếng anh cho dân CNTT
    Trả lời: 0
    Bài viết cuối: 27-05-2010, 11:06 PM
  4. Tài liệu học nghe tiếng anh
    Gửi bởi nthung trong diễn đàn English for IT | Tiếng anh cho dân CNTT
    Trả lời: 3
    Bài viết cuối: 21-07-2008, 01:33 PM
  5. Học tiếng anh, Giúp bạn học nghe nói tiếng anh
    Gửi bởi vie_kainznz trong diễn đàn English for IT | Tiếng anh cho dân CNTT
    Trả lời: 4
    Bài viết cuối: 30-06-2007, 07:36 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