Lập trình C: Mảng chuỗi


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Nếu bạn cần quản lý một số lượng chuỗi nào đó (ví dụ như quản lý sinh viên bao gồm có phần họ và tên, quê quán, ...) thì trong ngôn ngữ C bạn cần phải dùng đến mảng chuỗi. Bản chất của mảng chuỗi là mảng ký tự hai chiều với số hàng và số cột tương ứng, trong đó số hàng chính là số chuỗi bạn muốn có, còn số cột là kích thước tối đa của mỗi chuỗi.

Ta có thể khai báo một mảng chuỗi theo cú pháp như sau:

char Tên_mảng_chuỗi[Số_chuỗi] [Kích_thước_chuỗi];

Ví dụ sau đây khai báo mảng chuỗi có tên hoVaTen gồm 50 chuỗi, mỗi chuỗi có tối đa 30 ký tự.

char hoVaTen[50][30];

Nhập liệu cho mảng chuỗi

Dưới đây là một ví dụ thể hiện cách nhập liệu cho mảng chuỗi, trong đó vòng lặp for luôn là lựa chọn tốt nhất cho các thao tác với chuỗi:

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

main() {
  char hoVaTen[50][30];
  int i, sochuoi;

  do {
    printf("\nMoi ban nhap so chuoi muon thao tac: "); //trước tiên yêu cầu nhập số chuỗi muốn thao tác
    scanf("%d",&sochuoi);
  }while(!(sochuoi>0 && sochuoi<=50)); //số chuỗi phải nằm trong đoạn [1,50]

  fflush(stdin); //sau đó cần phải tiến hành khử dữ liệu trong bộ đệm bàn phím vì còn tàn dư ký tự '\n' , hàm này thuộc thư viện <stdio.h>

  printf("\nMoi ban nhap cac chuoi:");
  for (i=0; i<sochuoi; i++){ //rồi tiến hành
    do{
      printf("\nChuoi thu %d: ",i+1);
      gets(hoVaTen[i]); //nhập từng chuỗi một.
    }while(strlen(hoVaTen[i])>30);//cần đảm bảo mỗi chuỗi nhập vào có kích thước không >30
  }

  printf("\nSau khi nhap, ta duoc cac chuoi nhu sau:\n");
  for (i=0; i<sochuoi; i++){
    puts(hoVaTen[i]);
  }

  return 0;
}

Tìm chuỗi có độ dài lớn nhất, nhỏ nhất của mảng chuỗi

Dưới đây là ví dụ hoàn chỉnh thể hiện một cách tìm độ dài Max, Min trong mảng chuỗi:

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

main() {
  char hoVaTen[50][30];
  int i, sochuoi;//biến sochuoi để lưu số lượng chuỗi thực tế muốn thao tác
  int Max, Min; //khai báo hai biến này để lưu trữ độ dài lớn nhất, nhỏ nhất

  do {
    printf("\nMoi ban nhap so chuoi muon thao tac: ");
    scanf("%d",&sochuoi);
  }while(!(sochuoi>0 && sochuoi<=50));

  fflush(stdin);

  printf("\nMoi ban nhap cac chuoi:");
  for (i=0; i<sochuoi; i++){
    do{
      printf("\nChuoi thu %d: ",i+1);
      gets(hoVaTen[i]);
    }while(strlen(hoVaTen[i])>30);
  }

  Max = Min = strlen(hoVaTen[0]);
  for(i=1; i<sochuoi; i++) { //lấy từng chuỗi sau đó để so sánh
    //tìm độ dài Max
    if(Max<strlen(hoVaTen[i])) //nếu độ dài lớn hơn Max
      Max = strlen(hoVaTen[i]); //thì lưu vào Max (chu trình lặp lại với các chuỗi tiếp theo)
    //tìm độ dài Min
    if(Min>strlen(hoVaTen[i])) //nếu độ dài nhỏ hơn Min
      Min = strlen(hoVaTen[i]); //thì lưu vào Min
  }

//in ra giá trị độ dài lớn nhất và nhỏ nhất trong biến Max và Min sau chu trình lặp
  printf("\nDo dai lon nhat va nho nhat trong cac chuoi la Max = %d, Min = %d", Max, Min);

  return 0;
}

Một kết quả demo cho chương trình:

Mảng chuỗi - Tìm độ dài max min trong mảng chuỗi

» Tiếp: Hàm xử lý chuỗi (String)
« Trước: Chuỗi (String)
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!