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 cu nhp s chui mun thao tác
    scanf("%d",&sochuoi);
  }while(!(sochuoi>0 && sochuoi<=50)); //s chui phi nm trong đon [1,50]

  fflush(stdin); //sau đó cn phi tiến hành kh d liu trong b đm bàn phím vì còn tàn dư ký t '\n' , hàm này thuc thư vin <stdio.h>

  printf("\nMoi ban nhap cac chuoi:");
  for (i=0; i<sochuoi; i++){ //ri tiến hành
    do{
      printf("\nChuoi thu %d: ",i+1);
      gets(hoVaTen[i]); //nhp tng chui mt.
    }while(strlen(hoVaTen[i])>30);//cn đm bo mi chui nhp 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 chui thc tế mun thao tác
  int Max, Min; //khai báo hai biến này đ lưu tr đ dài ln nht, nh nht

  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++) { //ly tng chui sau đó đ so sánh
    //tìm đ dài Max
    if(Max<strlen(hoVaTen[i])) //nếu đ dài ln hơn Max
      Max = strlen(hoVaTen[i]); //thì lưu vào Max (chu trình lp li vi các chui 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 ln nht và nh nht trong biến Max và Min sau chu trình lp
  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 !!!