Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 20 kết quả

Đề tài: Không chạy được hàm strcpy

  1. #1
    Ngày gia nhập
    05 2010
    Nơi ở
    Nha Trang, Khánh Hòa
    Bài viết
    103

    Thumbs down Không chạy được hàm strcat

    Code:
    #include "stdio.h"
    #include "conio.h"
    #include "string.h"
    int main()
    {
     char *s1="Phong";
     char *s2="12Tin";
     strcat(s2,s1);
     printf("%s",s1);
     getch();
     return 0;
    }
    Mọi người ơi cho em hỏi ct kủa e vít sai chỗ nào mà lúc chạy cứ bị dừng ở hàm strcat vậy :-s Vít đúg theo giáo trình r mà :(
    P/s: cái này em viết trên dev-cpp 4.9.9.2
    Đã được chỉnh sửa lần cuối bởi hungphong10tin : 11-08-2011 lúc 11:02 AM.
    Ngày mai ra sao cũng chẳng biết nữa
    Mà có ra sao thì cũng chả sao

  2. #2
    Ngày gia nhập
    08 2011
    Nơi ở
    TPHCM quận Thủ Đức
    Bài viết
    48

    Trích dẫn Nguyên bản được gửi bởi hungphong10tin Xem bài viết
    Code:
    #include "stdio.h"
    #include "conio.h"
    #include "string.h"
    int main()
    {
     char *s1="Phong";
     char *s2="12Tin";
     strcat(s2,s1);
     printf("%s",s1);  // sai ở đây 
     getch();
     return 0;
    }
    Mọi người ơi cho em hỏi ct kủa e vít sai chỗ nào mà lúc chạy cứ bị dừng ở hàm strcat vậy :-s Vít đúg theo giáo trình r mà :(
    P/s: cái này em viết trên dev-cpp 4.9.9.2
    bài đã sửa lại đây:

    Code:
    #include "stdio.h"
    #include "conio.h"
    #include "string.h"
    int main()
    {
     char *s1="Phong";
     char *s2="12Tin";
     strcat(s2,s1); //bo sung chuoi s1 vao chuoi s2
     printf(s2);
     getch();
     return 0;
    }
    mà cái tiêu đề pic của bro kì lạ nhỉ ? " ko dùng dc strcpy : đây là hàm sao chuỗi, còn strcat là ghép chuỗi, chả liên quan gì tất @@
    Kẻ nào bắt buộc nghe ai.
    Luôn luôn vẫn giữ ý sai của mình.

  3. #3
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    Trích dẫn Nguyên bản được gửi bởi hungphong10tin Xem bài viết
    Code:
    #include "stdio.h"
    #include "conio.h"
    #include "string.h"
    int main()
    {
     char *s1="Phong";
     char *s2="12Tin";
     strcat(s2,s1);
     printf("%s",s1);
     getch();
     return 0;
    }
    Mọi người ơi cho em hỏi ct kủa e vít sai chỗ nào mà lúc chạy cứ bị dừng ở hàm strcat vậy :-s Vít đúg theo giáo trình r mà :(
    P/s: cái này em viết trên dev-cpp 4.9.9.2
    bạn học giáo trình nào thế, nếu viết thế mình khẳng định là sai bạn ạ

    Code:
    char *s1="Phong";
     char *s2="12Tin";
    khi khai báo biến, bạn cần biết chương trình cất các dữ liệu đó ở đâu, và sẽ sử dụng như thế nào

    khai báo 2 biến s1, s2, nó là biến được khởi tạo, vì vậy nó lưu trong section .data hoặc _DATA , và có thuộc tính Read và Write
    không khi đó các xâu "Phong";"12Tin" không phải là biến, nó được lưu trong section .rodata , và chỉ có quyền Read.

    strcat(s2,s1); sẽ nối xâu 1 vào cuối xâu 2, nôm na là cần quyền write , nhưng thực tế chỉ có quyền read, nên chương trình chết

    code sau thì chạy ok
    C Code:
    1. #include "stdio.h"
    2. #include "conio.h"
    3. #include "string.h"
    4. int main()
    5. {
    6.  char *s1="Phong";
    7.  char s2[100]="12Tin\0";
    8.  strcat(s2,s1);
    9.  printf("%s",s2);
    10.  getch();
    11.  return 0;
    12. }

  4. #4
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    Trích dẫn Nguyên bản được gửi bởi laksjd8979343 Xem bài viết
    bài đã sửa lại đây:

    Code:
    #include "stdio.h"
    #include "conio.h"
    #include "string.h"
    int main()
    {
     char *s1="Phong";
     char *s2="12Tin";
     strcat(s2,s1); //bo sung chuoi s1 vao chuoi s2
     printf(s2);
     getch();
     return 0;
    }
    mà cái tiêu đề pic của bro kì lạ nhỉ ? " ko dùng dc strcpy : đây là hàm sao chuỗi, còn strcat là ghép chuỗi, chả liên quan gì tất @@
    s1 đâu có bị ảnh hưởng bởi strcat(s2,s1) đâu bạn, khi thực hiện hàm strcat(s2,s1) thì s2+=s1, chỉ có s2 thay đổi còn s1 không thay đổi giá trị vì thế lệnh printf("%s",s1) vẫn in ra chuỗi "Phong";
    cái sai ở đây của chủ topic là việc khai báo dữ liệu như quangnh89 đã nói ở trên rồi mình cũng đồng ý với giải thích của quangnh89;
    I'll come back

  5. #5
    Ngày gia nhập
    08 2011
    Nơi ở
    TPHCM quận Thủ Đức
    Bài viết
    48

    Trích dẫn Nguyên bản được gửi bởi stupid_genius Xem bài viết
    s1 đâu có bị ảnh hưởng bởi strcat(s2,s1) đâu bạn, khi thực hiện hàm strcat(s2,s1) thì s2+=s1, chỉ có s2 thay đổi còn s1 không thay đổi giá trị vì thế lệnh printf("%s",s1) vẫn in ra chuỗi "Phong";
    cái sai ở đây của chủ topic là việc khai báo dữ liệu như quangnh89 đã nói ở trên rồi mình cũng đồng ý với giải thích của quangnh89;
    cái mà mình đang nói ở đây là theo mình chủ pic đang muốn nối cái chuỗi s1 vào s2 mà =.= nếu thế thì printf(s2) sẽ xuất ra kết quả của hàm strcat mà bạn chủ pic đang muốn làm là nối chuỗi s1 vào s2 đấy, và mình cũng đâu có nói gì là s1 thay đổi giá trị đâu@@
    ko tin bạn copy code mình vừa sửa xem có ra kết quả y chang quangnh89 ko là biết @@ chỉ cần sửa cái printf của bạn ấy lại là printf(s2) là ra cái kết quả bạn ấy muốn
    Đã được chỉnh sửa lần cuối bởi laksjd8979343 : 10-08-2011 lúc 11:36 PM.
    Kẻ nào bắt buộc nghe ai.
    Luôn luôn vẫn giữ ý sai của mình.

  6. #6
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    Mặc định Không chạy được hàm strcpy

    Trích dẫn Nguyên bản được gửi bởi laksjd8979343 Xem bài viết
    cái mà mình đang nói ở đây là theo mình chủ pic đang muốn nối cái chuỗi s1 vào s2 mà =.= nếu thế thì printf(s2) sẽ xuất ra kết quả của hàm strcat mà bạn chủ pic đang muốn làm là nối chuỗi s1 vào s2 đấy, và mình cũng đâu có nói gì là s1 thay đổi giá trị đâu@@
    ko tin bạn copy code mình vừa sửa xem có ra kết quả y chang quangnh89 ko là biết @@ chỉ cần sửa cái printf của bạn ấy lại là printf(s2) là ra cái kết quả bạn ấy muốn
    Bạn đang dùng compiler nào thế, mình đoán bạn dùng TC đúng không

  7. #7
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    Trích dẫn Nguyên bản được gửi bởi laksjd8979343 Xem bài viết
    cái mà mình đang nói ở đây là theo mình chủ pic đang muốn nối cái chuỗi s1 vào s2 mà =.= nếu thế thì printf(s2) sẽ xuất ra kết quả của hàm strcat mà bạn chủ pic đang muốn làm là nối chuỗi s1 vào s2 đấy, và mình cũng đâu có nói gì là s1 thay đổi giá trị đâu@@
    ko tin bạn copy code mình vừa sửa xem có ra kết quả y chang quangnh89 ko là biết @@ chỉ cần sửa cái printf của bạn ấy lại là printf(s2) là ra cái kết quả bạn ấy muốn
    nếu bạn dùng VS thì mình chắc chắn là nó bị break ra ngay khi run.
    I'll come back

  8. #8
    Ngày gia nhập
    08 2011
    Nơi ở
    TPHCM quận Thủ Đức
    Bài viết
    48

    Trích dẫn Nguyên bản được gửi bởi quangnh89 Xem bài viết
    Bạn đang dùng compiler nào thế, mình đoán bạn dùng TC đúng không
    Mình dùng borland C++
    Kẻ nào bắt buộc nghe ai.
    Luôn luôn vẫn giữ ý sai của mình.

  9. #9
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    Trích dẫn Nguyên bản được gửi bởi laksjd8979343 Xem bài viết
    Mình dùng borland C++
    Nếu vậy chắc compiler của bạn cũ rồi, thời 16 bit hoặc là chạy trên dos, các compiler đó khi dịch ra file exe 16 bit thì chỉ coi bộ nhớ chia thành các segment thôi, sử dụng các thanh ghi CS, DS để lưu địa chỉ, làm gì có memory protection như mình nói. Mình tự tin và khẳng định code đó nếu build thì không lỗi nhưng nếu chạy thì gặp lỗi runtime 0xC0000005: Access violation

  10. #10
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    Trích dẫn Nguyên bản được gửi bởi quangnh89 Xem bài viết
    Nếu vậy chắc compiler của bạn cũ rồi, thời 16 bit hoặc là chạy trên dos, các compiler đó khi dịch ra file exe 16 bit thì chỉ coi bộ nhớ chia thành các segment thôi, sử dụng các thanh ghi CS, DS để lưu địa chỉ, làm gì có memory protection như mình nói. Mình tự tin và khẳng định code đó nếu build thì không lỗi nhưng nếu chạy thì gặp lỗi runtime 0xC0000005: Access violation
    chính xác, lỗi truy xuất bộ nhớ
    I'll come back

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

  1. Algorithm Lệnh strcpy trong C# là lệnh nào?
    Gửi bởi quangbinhit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 24-05-2011, 08:14 PM
  2. hàm strcpy và strcat có tác dụng gì?
    Gửi bởi icanfeel trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 26-11-2010, 11:22 AM
  3. lỗi sử dụng lệnh strcpy() trong C++!!!
    Gửi bởi quang_uit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 11-11-2010, 10:46 PM
  4. Lập trình C++ Sử dụng hàm strcpy trên Dev C++?
    Gửi bởi meoluoi trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 21-03-2010, 12:39 AM
  5. Công dụng của hàm strcpy?
    Gửi bởi 7261819 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 18
    Bài viết cuối: 20-04-2009, 10:08 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