Để tránh nhàm chán, tôi kể cho các bạn nghe một kỷ niệm của tôi và cũng là một bài toán cho các bạn giải quyết.
Cách đây khoảng 5 năm, chúng tôi có xây dựng một chương trình VBA đọc code C, liệt kê hết các hằng số và số lượng biến số global, tên các hàm,...
Để làm bài toán ấy chúng ta thu hẹp phạm vi dần dần:
Bài toán lớn : Đọc toàn bộ các file .c
Bài toán nhỏ: Đọc 1 file .c
Bài toán nhỏ hơn: Loại bỏ phần comment có trong file
Bài toán nhỏ hơn nữa: Đọc nội dung của một hàm.
Mang tính chất thuật toán giải thuật, nên tôi đi từ bài toán nhỏ, với giả thiết như sau:
Bây giờ giả thiết tôi có file a.txt (đường dẫn file đã biết) nội dung như sau:
Giả thiết rằng dấu hiệu để phát hiện một hàm luôn luôn là ){
Trong đó hai dấu này viết liên tiếp trong cùng một hàng.
(ở đây tôi cho dễ đi, thực tế các bạn thấy thì người ta viết code hay xuống dòng rồi mới viết {
Các bạn không cần quan tâm tới điều này, hãy cứ lấy giả thiết của tôi làm căn cứ giải quyết bài toán.
Bây giờ output tôi muốn các bạn lấy được đoạn nội dung của hàm int main() là:
Nội dung này được lưu ra một biến tên là outputtemp.
Nào, mời các bạn động não.
Cách đây khoảng 5 năm, chúng tôi có xây dựng một chương trình VBA đọc code C, liệt kê hết các hằng số và số lượng biến số global, tên các hàm,...
Để làm bài toán ấy chúng ta thu hẹp phạm vi dần dần:
Bài toán lớn : Đọc toàn bộ các file .c
Bài toán nhỏ: Đọc 1 file .c
Bài toán nhỏ hơn: Loại bỏ phần comment có trong file
Bài toán nhỏ hơn nữa: Đọc nội dung của một hàm.
Mang tính chất thuật toán giải thuật, nên tôi đi từ bài toán nhỏ, với giả thiết như sau:
Bây giờ giả thiết tôi có file a.txt (đường dẫn file đã biết) nội dung như sau:
Mã:
int egf(){
a = a + 2;
return 0;}
int main(){
if(a==b){
printf("Hello, World! \n");
}
return 0;}
int abc2(){
if(c==d){
printf("Hello, World! \n");
}
return 0;
}
Trong đó hai dấu này viết liên tiếp trong cùng một hàng.
(ở đây tôi cho dễ đi, thực tế các bạn thấy thì người ta viết code hay xuống dòng rồi mới viết {
Mã:
int egf()
{
a = a + 2;
Bây giờ output tôi muốn các bạn lấy được đoạn nội dung của hàm int main() là:
Output mong muốn:
if(a==b){
printf("Hello, World! \n");
}
return 0;
Nào, mời các bạn động não.