Quy trình trích xuất năm từ chuỗi dạng "Ten Phim (Nam)" và chuyển sang số nguyên.
Các bước
- Dùng
strchr()tìm vị trí ký tự'('. - Sao chép các ký tự bên trong ngoặc vào mảng char.
- Dùng
atoi()chuyển chuỗi kết quả thành số nguyên.
Code minh họa
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char *name = "The Matrix(1999)";
char *ps = strchr(name, '('); // Tim '('
if (ps != NULL) {
char year_str[5] = {0};
int p;
// Sao chep 4 ky tu sau '('
for (p = 1; p < 5 && ps[p] != ')' && ps[p] != '\0'; p++) {
year_str[p-1] = ps[p];
}
year_str[4] = '\0';
int year = atoi(year_str);
printf("Nam: %d\n", year);
}
return 0;
}
Kết quả
Nam: 1999
Cách tốt hơn (an toàn, chuẩn C99+):
#include <stdio.h>
#include <stdlib.h>
int main() {
const char *name = "The Matrix(1999)";
const char *start = strchr(name, '(');
if (start) {
long year = strtol(start + 1, NULL, 10); // strtol an toan hon atoi
printf("Nam: %ld\n", year);
}
return 0;
}
strtol cho phép phát hiện lỗi chuyển đổi, hỗ trợ cơ số tùy chọn, an toàn hơn atoi.