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

Đề tài: Hỏi về hàm trả lại xâu kí tự

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

    Mặc định Hỏi về hàm trả lại xâu kí tự

    Ko biết vấn đề này có trên forum ko nhưng mình search google ko ra , mình cũng gà nên hỏi tù mù tí >.<

    Mình muồn hỏi là liệu một hàm có thể trả lại giá trị một xâu kí tự hay ko . Ví dụ như là
    char xau_ki_tu ()
    {
    char string1[10]="abc",a[10];
    strcpy(a,string1) ;
    return a;
    }

    thì báo lỗi không chuyển dc dạng từ char* thành char

    nếu sửa lại thành return a[0] hoặc a[1], a[2] thì nó chỉ trả lại 1 kí tự ứng với địa chỉ ô đấy trong mảng là chữ a, b hoặc c...

    vậy cho mình hỏi có cách nào trả lại giá trị cho hàm là cả xâu abc ko , ko phải cuối hàm cout <<a đâu nhé

    mình viết = dev C

    Mọi người giúp mình với nhé

  2. #2
    Ngày gia nhập
    04 2012
    Bài viết
    42

    Biến trả về ở đây là 1 con trỏ. Bạn sữa lại :

    C Code:
    1. char* xau_ki_tu ()
    2. {
    3. char string1[10]="abc",*a = (char*)malloc(sizeof(char)*10);
    4. strcpy(a,string1) ;
    5. return a;
    6. }

    Nhưng theo tôi nghĩ thì không nên dùng biến cục bộ. Vì sau này khi không sử dụng đến biến a nữa thì ta không thể giải phóng vùng nhớ cho nó. Hay còn gọi là con trỏ lạc. Có gì sai sót xin được chỉ giáo.

    C Code:
    1. char* xau_ki_tu (char *a)
    2. {
    3. char string1[10]="abc";
    4. strcpy(a,string1) ;
    5. return a;
    6. }
    C Code:
    1. while (!silly)
    2.     cout<<"Study everything !";

  3. #3
    Ngày gia nhập
    09 2010
    Bài viết
    26

    Muốn hàm nó return về cả xâu "abc" thì bạn phải để kiểu return là char* chứ ko phải char !
    Khi ta ở chỉ là nơi đất ở
    Khi ta đi đất bỗng hóa tâm hồn !

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

    Thank các bác rất nhiều

    nhờ các bác gợi ý e viết ra rồi , hí hí

    Code:
    #include <iostream>
    #include <conio.h>
    #include <string.h>
    using namespace std;
                   
                   char* xau_ki_tu (char *string1)
                            {
                                   char *string2 = new char(10);
                                   strcpy(string2,string1) ;
                                   return string2;
                             }
    int main()
    {
          cout<< xau_ki_tu("abc");
          
          getch();
    }
    Mội lần nữa chân thành cảm ơn các cao thủ

  5. #5
    Ngày gia nhập
    11 2012
    Bài viết
    136

    Bạn thiếu giải phóng vùng nhớ sau khi cấp phát nhé
    C++ Code:
    1. char* xau_ki_tu (char *string1)
    2. {
    3.   char *string2 = new char[10];
    4.   strcpy(string2,string1) ;
    5.   return string2;
    6. }
    7. int main()
    8. {
    9.  char *c = xau_ki_tu("abc");//thêm tí cho nó đủ
    10.  cout<<c;
    11.  delete c;  
    12.  c=NULL;
    13.  getch();
    14. }
    Giao lưu và học hỏi
    https://www.facebook.com/kimcy1992

  6. #6
    Ngày gia nhập
    04 2011
    Nơi ở
    Hà Nội
    Bài viết
    253

    Mặc định Hỏi về hàm trả lại xâu kí tự

    Trích dẫn Nguyên bản được gửi bởi invonoker Xem bài viết
    Thank các bác rất nhiều

    nhờ các bác gợi ý e viết ra rồi , hí hí

    Code:
    #include <iostream>
    #include <conio.h>
    #include <string.h>
    using namespace std;
                   
                   char* xau_ki_tu (char *string1)
                            {
                                   char *string2 = new char(10);
                                   strcpy(string2,string1) ;
                                   return string2;
                             }
    int main()
    {
          cout<< xau_ki_tu("abc");
          
          getch();
    }
    Mội lần nữa chân thành cảm ơn các cao thủ
    new char(10) khác với new char[10] đấy bạn ạ. Coi chừng crash như chơi :|

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

  1. Trao đổi liên kết, trao doi logo, Text Link với các webforumblog (free)
    Gửi bởi nguyenlam14990 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 31
    Bài viết cuối: 13-03-2012, 11:53 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