1
Làm cách nào để in ra ký tự của một chuỗi dùng đến mảng trong C/C++?
0
Cộng đồng đã đăng:

thêm bình luận...
0
viétkâz50 đã đăng:

Bản chất chuỗi cũng là một mảng các ký tự, bạn hoàn toàn có thể dùng vòng lặp for để in các ký tự trong chuỗi ra tương tự như in một mảng các số nguyên bình thường.

Ví dụ khi ta khai báo một chuỗi như sau:

char str[] = "Welcome"; // Trong C

Hoặc

string str = "Welcome"; // Trong C++

Thì bản chất bên dưới máy tính, chúng được lưu thành một mảng các ký tự,

Bản chất của chuỗi trong lập trình

Mã nguồn minh họa (xác định trước độ dài của chuỗi):

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Welcome"; // Trong C
    int str_length = strlen(str);

    // In ra từng ký tự của chuỗi str sử dụng mảng
    for (int i = 0; i < str_length; i++)
        printf("%5c", str[i]);

    printf("\n");
}

Ký tự \0 là ký tự dùng để nhận biết sự kết thúc của chuỗi, nếu bạn không muốn xác định độ dài của chuỗi trước khi duyệt thì có thể dựa vào ký tự này.

#include <stdio.h>

int main() {
    char str[] = "Welcome"; 

    int i = 0;
    while (str[i] != '\0') {
        printf("%5c", str[i]);
        i++;
    }

    printf("\n");
}
Thành Trung 06.11.2018

@ThànhTrung, cách của bạn sẽ không chạy đúng với những chuỗi không chứa ký tự \0, bởi vì ký tự \0 là không bắt buộc phải có ở cuối chuỗi trong C/C++, nếu mình khai báo mảng str như sau:

char str[] = {'W', 'e', 'l', 'c', 'o', 'm', 'e'};

Hoặc đọc một chuỗi từ file, thì ký tự \0 sẽ không được Compiler tự động thêm vào, vòng lặp sẽ vượt ra khỏi ngoài phạm vi độ dài chuỗi, kết quả sẽ sai, do đó xác định độ dài của chuỗi trước khi duyệt sẽ an toàn hơn rất nhiều.

Sun Sun 06.11.2018
thêm bình luận...
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)