Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 22 kết quả

Đề tài: Nhập và in ra một chuỗi kiểu char* ?

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

    Mặc định Nhập và in ra một chuỗi kiểu char* ?

    Mình có chương trình như thế này:
    Code:
    #include "stdio.h"
    ...
    
    void main()
    {
          char *T;
          printf("Nhap vao 1 chuoi:");
          scanf("%c", &T);
          printf("%c", T);
    }
    Khi chạy chương trình chỉ in ra 1 kí tự đầu tiên. Nếu mình muốn in ra nguyên 1 chuỗi thì phải làm như thế nào. Mình cũng không rõ về kiểu char* lắm. bạn nào biết hướng dẫn giúp nhé.

  2. #2
    No Avatar
    ngocbig Khách

    Bạn đã nhầm khi khai báo chuỗi là char *T. Đây chỉ là khai báo con trỏ, trỏ đến một chuỗi kí tự mà thôi.
    T giờ cũng chính là một con trỏ nên không cần thêm toán tử "&" nữa. Và định dạng "%c" là để in một kí tự, còn "%s" là để in chuỗi
    C Code:
    1. void main()
    2. {
    3.       char T[80];//Chuỗi có thế chứa tối đa 80-1 kí tự
    4.       printf("Nhap vao 1 chuoi:");
    5.       scanf("%s", T); //Dùng gets hoặc fgets để nhập chuỗi có khoảng trống (kí tự trống)
    6.       printf("%s", T);
    7. }

  3. #3
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    Xài con trỏ thì phải cấp phát vùng nhớ cho nó và giải phóng khi không dùng nữa :
    C Code:
    1. #include <stdio.h>
    2. #include <malloc.h>
    3.  
    4. int main() {
    5.     char *T = (char*)malloc(80);
    6.     puts("Nhap vao mot chuoi:");
    7.     gets(T);
    8.     puts(T);
    9.     free(T);
    10. }
    I'm superman

  4. #4
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Giải thích?
    Câu hỏi của cậu hơi bị lạ ! Có gì để giải thích ? Chính cậu nói char* T chỉ là con trỏ thì trung nói cấp phát động rồi còn giải thích chỗ nào nữa ?

  5. #5
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    Bài này dùng con trỏ mà không cấp phát động thì dùng thế nào nhỉ ????
    I'm superman

  6. #6
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    Mặc định Nhập và in ra một chuỗi kiểu char* ?

    Đâu ai nói dùng con trỏ phải giải phóng và cấp phát vùng nhớ chỉ có điều khai báo nó là con trỏ mà không cấp phát bộ nhớ hay cho nó trỏ đến vùng nhớ nào đó thì xài sao được ???? . Mình nói cái bài của cậu Post topic này mà dùng con trỏ thì phải cấp phát thì mới dùng được còn giải phóng hay không thì không ai cấm . Nhưng cấp phát xong không dùng nữa thì nên giải phóng thôi nhắc cho bạn ấy nhớ còn không giải phóng cũng chả sao ..... ???? Hehe thói quen sài xong không giải phóng vùng nhớ bị anh rox nhắc mấy lần nên rất nhớ .
    Đã được chỉnh sửa lần cuối bởi trung_dk070384 : 24-12-2008 lúc 05:37 PM.
    I'm superman

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

    Code:
    #include <stdio.h>
    #include <alloc.h>
    
    int main() 
    {
        char *T; 
        int n;   // Cái này dùng để khai báo cho độ dài của chuỗi T;
        scanf("%d",&n);
        T=(chat*)malloc(n*sizeof(char));
         /* Dùng malloc để cấp phát bộ nhớ bất kỳ*/
        T=(chat*)calloc(n*sizeof(char));
         /* Dùng calloc để cấp phát bộ nhớ khởi tạo có giá trị NULL*/
        puts("Nhap vao mot chuoi:");
        gets(T);
        puts(T);
        free(T); 
        /* Cần dùng chuỗi này tiếp thì không có lệnh free(T), nếu không dùng nữa thì free() nó đi cho nhẹ!*/  
    }
    Mình gà vịt, biết có thế thui!
    Hehe, chúc bạn giáng sinh vui vẻ nha!

  8. #8
    Ngày gia nhập
    12 2007
    Bài viết
    25

    Thanks all! Không ngờ bài của mình lại được các bạn post reply nhanh như vậy. Tại vì mình đang làm bài về thuật toán Brute-Force. Thầy yêu cầu hàm nhập phải là InputText(char *P, char *T), với T là chuỗi lớn còn P là chuỗi nhỏ cần tìm, thêm một hàm là stringsearchBF(char *P, char *T) để tìm kiếm chuỗi, mới bắt đầu làm nên còn vướng chỗ này. Còn có một yêu cầu nữa là đếm thời gian thực hiện thuật toán, không biết có bạn nào biết cách tính không, có thể hướng dẫn ý tưởng cho mình được không? Thanks!

  9. #9
    Ngày gia nhập
    12 2007
    Bài viết
    25

    Nếu như thay vì in ra toàn bộ chuỗi mình muốn in ra kí tự thứ n trong chuỗi thì làm như thế nào nhỉ?

    Chẳng hạn nhập vào chuỗi: conmeo
    In ra: e
    Mình muốn chuyển biến T thành kiểu mảng thì làm như thế nào? (Để dùng cho việc duyệt các phần tử của chuỗi, thực hiện trong thuật toán Brute-Force)

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

    Bạn thử sử dụng khai báo qua con trỏ xem.

    Code:
    char *ptr = "conmeo"
    printf("%c", *(ptr+4)); //= e

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

  1. Kỹ thuật C++0x Sự khác nhau của chuỗi char và string
    Gửi bởi hearttt2911 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 07-12-2012, 09:50 PM
  2. Lỗi của kiểu dữ liệu Char và cách nhập giá trị nguyên vào biến Char?
    Gửi bởi fcbik58 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: 08-08-2011, 11:27 AM
  3. Algorithm Chuyển chuỗi thành mảng char trong C#
    Gửi bởi saonam trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 17-05-2011, 07:54 AM
  4. Dùng biến con trỏ để nhập 1 chuỗi char trong Dev C++???
    Gửi bởi congaumap 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: 17-03-2011, 11:33 PM
  5. [C++]Cách gán một chuỗi kí tự vào char
    Gửi bởi dungtimtoinua2008 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 9
    Bài viết cuối: 09-03-2010, 12:04 AM

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