Ticker

6/recent/ticker-posts

Hàm ngôn ngữ C - part 2

Hàm abort() ngừng thực thi chương trình một cách bất thường.

Khai báo hàm abort() trong C

Dưới đây là phần khai báo cho abort() trong C:

void abort(void)

Tham số

Hàm này không nhận tham số nào.

Trả về giá trị

Hàm này không trả về bất cứ giá trị nào.

Ví dụ

Chương trình C sau minh họa cách sử dụng của abort() trong C:

#include <stdio.h>
#include <stdlib.h>

int main ()
{
   FILE *fp;
   
   printf("Chuan bi mo laptrinhc.txt\n");
   fp = fopen( "laptrinhc.txt","r" );
   if(fp == NULL)
   {
      printf("Dung chuong trinh !!!\n");
      abort();
   }
   printf("Dong laptrinhc.txt\n");
   fclose(fp);
   
   return(0);
}

Biên dịch chương trình C trên sẽ cho kết quả:

Biên dịch chương trình C để xem kết quả

Hàm int atexit(void (*func)(void)) gọi hàm func khi chương trình kết thúc. Bạn có thể đăng ký hàm kết thúc (hàm func) của bạn ở bất cứ đâu bạn thích, nhưng hàm này sẽ được gọi tại thời điểm kết thúc chương trình.

Khai báo hàm atexit() trong C

Dưới đây là phần khai báo cho atexit() trong C:

int atexit(void (*func)(void))

Tham số

func: Đây là hàm để được gọi tại thời điểm kết thúc chương trình.

Trả về giá trị

Hàm này trả về một giá trị 0 nếu hàm này được đăng ký thành công. Nếu thất bại thì trả về giá trị khác 0.

Ví dụ

Chương trình C sau minh họa cách sử dụng của atexit() trong C:

#include <stdio.h>
#include <stdlib.h>

void functionA ()
{
   printf("Vi du mot ham functionA\n");
}

int main ()
{
   /* Dang ky mot ham ket thuc chuong trinh */
   atexit(functionA );
   
   printf("Bat dau chay phan chuong trinh chinh ...\n");

   printf("Thoat chuong trinh chinh ...\n");

   return(0);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Biên dịch và chạy chương trình C để xem kết quả

Hàm void exit(int status) kết thúc ngay lập tức tiến trình đang gọi. Bất cứ file nào được mở bởi tiến trình thì được đóng và bất cứ tiến trình con nào được kế thừa bởi tiến trình ban đầu và tiến trình cha được gửi một tín hiệu SIGCHILD.

Khai báo hàm exit() trong C

Dưới đây là phần khai báo cho exit() trong C:

void exit(int status)

Tham số

status: Đây là giá trị trạng thái được trả về tới tiến trình cha.

Trả về giá trị

Hàm này không trả về bất cứ giá trị nào.

Ví dụ

Chương trình C sau minh họa cách sử dụng của exit() trong C:

#include <stdio.h>
#include <stdlib.h>

int main ()
{
   printf("Bat dau thuc thi chuong trinh ...\n");
   
   printf("Thoat chuong trinh ...\n");
   exit(0);

   printf("Ket thuc chuong trinh ...\n");

   return(0);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Biên dịch và chạy chương trình C để xem kết quả

Hàm char *getenv(const char *name) tìm kiếm chuỗi môi trường được trỏ tới bởi tham số name và trả về giá trị gắn kết với chuỗi đó.

Khai báo hàm getenv() trong C

Dưới đây là phần khai báo cho getenv() trong C:

char *getenv(const char *name)

Tham số

name: Đây là chuỗi chứa tên của biến được yêu cầu.

Trả về giá trị

Hàm này trả về một chuỗi (kết thúc bởi null) với giá trị của biến môi trường được yêu cầu, hoặc trả về NULL nếu biến môi trường không tồn tại.

Ví dụ

Chương trình C sau minh họa cách sử dụng của getenv() trong C:

#include <stdio.h>
#include <stdlib.h>

int main ()
{
   printf("PATH : %s\n", getenv("PATH"));
   printf("HOME : %s\n", getenv("HOME"));
   printf("ROOT : %s\n", getenv("ROOT"));

   return(0);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Biên dịch và chạy chương trình C để xem kết quả

Hàm int system(const char *command) truyền tên lệnh hoặc tên chương trình được xác định bởi command tới môi trường host để được thực thi bởi Command processor và trả về sau khi lệnh đã hoàn thành.

Khai báo hàm system() trong C

Dưới đây là phần khai báo cho system() trong C:

int system(const char *command)

Tham số

command: Đây là chuỗi chứa tên lệnh.

Trả về giá trị

Giá trị được trả về là -1 nếu có lỗi, và nếu thành công thì trả về trạng thái của lệnh.

Ví dụ

Chương trình C sau minh họa cách sử dụng của hàm system() để liệt kê tất cả file và thư mục trong thư mục hiện tại trên thiết bị Windows:

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

int main ()
{
   char command[50];

   strcpy( command, "dir" );
   system(command);

   return(0);
} 

Biên dịch chương trình C trên môi trường Window để xem kết quả.

Hàm bsearch() trong C

Hàm void *bsearch(const void *key, const void *base, nitems, size, int (*compar)(const void *, const void *)) tìm kiếm một mảng các đối tượng nitems, thành viên ban đầu của nó được trỏ tới bởi base, cho một thành viên mà kết nối đối tượng được trỏ tới bởi key. Kích cỡ của mỗi phần tử mảng được xác định bởi size.

Các nội dung của mảng nên là theo thứ tự tăng dần tương ứng với hàm so sánh được tham chiếu bởi compar.

Hàm bsearch(), là viết tắt của Binary Search, được viết dựa trên tư tưởng của giải thuật Tìm kiếm nhị phân (Binary Search), bạn có thể tham khảo giải thuật này tại Giải thuật tìm kiếm nhị phân.

Khai báo hàm bsearch() trong C

Dưới đây là phần khai báo cho bsearch() trong C:

void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))

Tham số

key: Đây là con trỏ tới đối tượng mà đóng vai trò như là key để tìm kiếm, được ép kiểu dưới dạng một void*.

base: Đây là con trỏ tới đối tượng đầu tiên của mảng, nơi cuộc tìm kiếm được thực hiện, được ép kiểu dưới dạng một void*.

nitems: Đây là số phần tử trong mảng được trỏ tới bởi base.

size: Đây là kích cỡ (giá trị byte) của mỗi phần tử trong mảng.

compare: Đây là hàm để so sánh hai phần tử.

Trả về giá trị

Hàm này trả về một con trỏ tới một entry trong mảng mà kết nối với key tìm kiếm. Nếu key không được tìm thấy, hàm trả về một con trỏ NULL.

Ví dụ

Chương trình C sau minh họa cách sử dụng của bsearch() trong C:

#include <stdio.h>
#include <stdlib.h>


int cmpfunc(const void * a, const void * b)
{
   return ( *(int*)a - *(int*)b );
}

int values[] = { 5, 20, 29, 32, 63 };

int main ()
{
   int *item;
   int key = 32;

   /* su dung ham bsearch() de tim gia tri 32 trong mang */
   item = (int*) bsearch (&key, values, 5, sizeof (int), cmpfunc);
   if( item != NULL ) 
   {
      printf("Da tim thay phan tu co gia tri = %d\n", *item);
   }
   else 
   {
      printf("Khong tim thay phan tu co gia tri = %d\n", *item);
   }
   
   return(0);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Biên dịch và chạy chương trình C  để xem kết quả

Hàm qsort() trong C

Hàm void qsort(void *base, so-phan-tu, kich-co, int (*compar)(const void *, const void*)) sắp xếp một mảng.

Hàm qsort() là viết tắt của Quick Sort, được viết dựa trên giải thuật Sắp xếp nhanh (Quick Sort).

Khai báo hàm qsort() trong C

Dưới đây là phần khai báo cho qsort() trong C:

void qsort(void *base, so-phan-tu, kich-co, int (*compar)(const void *, const void*))

Tham số

base: Đây là con trỏ tới phần tử đầu tiên của mảng cần được sắp xếp.

so-phan-tu: Đây là số phần tử trong mảng được trỏ bởi con trỏ base.

kich-co: Đây là kích cỡ (bằng byte) của mỗi phần tử trong mảng.

compar: Hàm so sánh hai phần tử.

Trả về giá trị

Hàm này không trả về bất cứ giá trị nào.

Ví dụ

Chương trình C sau minh họa cách sử dụng của qsort() trong C:

#include <stdio.h>
#include <stdlib.h>

int values[] = { 88, 56, 100, 2, 25 };

int cmpfunc (const void * a, const void * b)
{
   return ( *(int*)a - *(int*)b );
}

int main()
{
   int n;

   printf("Truoc khi sap xep, list co dang: \n");
   for( n = 0 ; n < 5; n++ ) 
   {
      printf("%d ", values[n]);
   }

   qsort(values, 5, sizeof(int), cmpfunc);

   printf("\nSau khi sap xep, list co dang: \n");
   for( n = 0 ; n < 5; n++ ) 
   {   
      printf("%d ", values[n]);
   }
  
   return(0);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Biên dịch và chạy chương trình C để xem kết quả

Hàm abs() trong C

Hàm int abs(int x) trả về giá trị tuyệt đối của số nguyên x.

Khai báo hàm abs() trong C

Dưới đây là phần khai báo cho abs() trong C:

int abs(int x)

Tham số

x: đây là một giá trị nguyên.

Trả về giá trị

Trả về giá trị tuyệt đối của x.

Ví dụ

Chương trình C sau minh họa cách sử dụng của abs() trong C:

#include <stdio.h>
#include <stdlib.h>

int main ()
{
   int a, b;

   a = abs(6);
   printf("Gia tri cua a = %d\n", a);

   b = abs(-11);
   printf("Gia tri cua b = %d\n", b);
   
   return(0);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả sau:

Biên dịch và chạy chương trình C để xem kết quả

Hàm div() trong C

Hàm div_t div(int numer, int denom) chia tử số numer cho mẫu số denom.

Khai báo hàm div() trong C

Dưới đây là phần khai báo cho div() trong C:

div_t div(int numer, int denom)

Tham số

numer: tử số.

denom: mẫu số.

Trả về giá trị

Hàm này trả về giá trị trong một cấu trúc được định nghĩa trong <cstdlib>, gồm hai phần, với div_t thì đó là: int quot; int rem;

Ví dụ

Chương trình C sau minh họa cách sử dụng của div() trong C:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   div_t output;

   output = div(27, 4);
   printf("Phan thuong cua phep chia (27/ 4) = %d\n", output.quot);
   printf("Phan du cua phep chia (27/4) = %d\n", output.rem);

   output = div(27, 3);
   printf("\nPhan thuong cua phep chia (27/ 3) = %d\n", output.quot);
   printf("Phan du cua phep chia (27/3) = %d\n", output.rem);

   return(0);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Biên dịch và chạy chương trình C để xem kết quả

Hàm labs() trong C

Hàm long int labs(long int x) trả về giá trị tuyệt đối của x.

Khai báo hàm labs() trong C

Dưới đây là phần khai báo cho labs() trong C:

long int labs(long int x)

Tham số

x: một giá trị nguyên.

Trả về giá trị

Hàm này trả về giá trị tuyệt đối của x.

Ví dụ

Chương trình C sau minh họa cách sử dụng của labs() trong C:

#include <stdio.h>
#include <stdlib.h>

int main ()
{
   long int a,b;

   a = labs(65987L);
   printf("Gia tri cua a = %ld\n", a);

   b = labs(-1005090L);
   printf("Gia tri cua b = %ld\n", b);
   
   return(0);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Biên dịch và chạy chương trình C để xem kết quả

Hàm ldiv() trong C

Hàm div_t div(long int numer, long int denom) chia tử số numer cho mẫu số denom.

Hàm ldiv() trong C

Dưới đây là phần khai báo cho ldiv() trong C:

div_t div(long int numer, long int denom)

Tham số

numer: tử số.

denom: mẫu số.

Trả về giá trị

Hàm này trả về giá trị trong một cấu trúc được định nghĩa trong <cstdlib>, gồm hai phần, với div_t thì đó là: long quot; long rem;

Ví dụ

Chương trình C sau minh họa cách sử dụng của ldiv() trong C:

#include <stdio.h>
#include <stdlib.h>

int main ()
{
   ldiv_t output;

   output = ldiv(100000L, 30000L);

   printf("Phan thuong cua phep chia = %ld\n", output.quot);

   printf("Phan du cua phep chia = %ld\n", output.rem);
   
   return(0);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Biên dịch và chạy chương trình C để xem kết quả

Hàm int rand(void) trả về một số ngẫu nhiên trong dãy từ 0 tới RAND_MAX.

RAND_MAX là một hằng có giá trị mặc định đa dạng (tùy thuộc vào một số yếu tố như Hệ điều hành,...), nhưng ít nhất là 32767.

Khai báo hàm rand() trong C

Dưới đây là phần khai báo cho rand() trong C:

int rand(void)

Tham số

Hàm rand không nhận tham số nào

Trả về giá trị

Hàm này trả về một số ngẫu nhiên trong dãy từ 0 tới RAND_MAX

Ví dụ

Chương trình C sau minh họa cách sử dụng của rand() trong C:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
   int i, n;
   time_t t;
   
   n = 5;
   
   /* Khoi tao bo sinh so ngau nhien */
   srand((unsigned) time(&t));

   /* in 5 so ngau nhien trong day tu 0 toi 49 */
   for( i = 0 ; i < n ; i++ ) 
   {
      printf("%d\n", rand() % 50);
   }
   
   return(0);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Biên dịch và chạy chương trình C để xem kết quả

Hàm void srand(unsigned int seed) cung cấp seed cho bộ sinh số ngẫu nhiên được sử dụng bởi hàm rand.

Khai báo hàm srand() trong C

Dưới đây là phần khai báo cho srand() trong C:

void srand(unsigned int seed)

Tham số

seed: là một giá trị nguyên, được sử dụng như là seed bởi giải thuật sinh số ngẫu nhiên.

Trả về giá trị

Hàm này không trả về bất cứ giá trị nào.

Ví dụ

Chương trình C sau minh họa cách sử dụng của srand() trong C:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
   int i, n;
   time_t t;
   
   n = 5;
   
   /* Khoi tao bo sinh so ngau nhien */
   srand((unsigned) time(&t));

   /* in 5 so ngau nhien trong day tu 0 toi 50 */
   for( i = 0 ; i < n ; i++ ) 
   {
      printf("%d\n", rand() % 50);
   }
   
   return(0);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Biên dịch và chạy chương trình C để xem kết quả




 

Đăng nhận xét

0 Nhận xét