Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Sử dụng hàm strcmp trong C

  1. #1
    Ngày gia nhập
    12 2017
    Bài viết
    0

    Question Sử dụng hàm strcmp trong C

    Hiện tại mình đang làm một chương trình C để tìm một dòng tên trong 1 file như mẫu, người dùng sẽ chỉ cần nhập 1 tên (tên đệm/họ/tên chính) ở bảng command thì chương trình tự động in ra cả đầy đủ tên và thông số bên phải luôn
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		b.png
Lần xem:	9
Size:		1.8 KB
ID:		59880

    Ý kiến ở đây là mình sẽ sử dụng strtok để chia nó ra thành từng phần nhỏ như thế này. Người dùng nhập 1 tên (sử dụng argv), nếu argv giống với token thì in ra toàn bộ tên đó.
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		a.png
Lần xem:	9
Size:		1.9 KB
ID:		59881

    Mình sử dụng hàm strcmp để so sánh giữa từng token với argv như thế này:

    Code:
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h> 
    
    int main (int argc, char *argv[]) {
    	FILE *file;
    	char s[100]; 
    	char s1[100];
    	char *token; 
    	char tokenList[20][100];
    	int NumTokens = 0; 
    	
    	
    	file = fopen("biglist2.txt", "r");
    	while (!feof(file)) {
    		fgets(s, 100, file); 
    		token = strtok(s, " ");
    		NumTokens = 0;
    		while (token != NULL) {
    			strcpy( tokenList[NumTokens], token); 
    											
    			NumTokens++;
    			
    			if (0 == strcmp(token, argv[1])){
    
    				printf("found: %s %s %s \n", tokenList[0], tokenList[1], tokenList[2]);
    			}
    			token = strtok(NULL," ");
    	
    	
    		}	
    	}
    	fclose (file);
    	return 0;
    }
    Chương trình liên tục bị crash khi chạy file .exe, cao nhân nào giúp mình với
    Đã được chỉnh sửa lần cuối bởi qm5900 : 20-12-2017 lúc 10:16 PM.

  2. #2
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    514

    Chương trình của bạn chỉ crash nếu dòng lệnh cho không đủ tham số. Nếu cung cấp đủ tham số, nó không crash.

    - - - Nội dung đã được cập nhật ngày 20-12-2017 lúc 08:04 PM - - -

    Ví dụ. Với biglist2.txt:
    Code:
    Noah Bui Giang 55 46.10
    Judy Elisa Au 20 83.00
    màn hình hiển thị:
    Code:
    d:\bin\Debug>test0 Elisa Au 20
    found: Judy Elisa Giang
    found: Judy Elisa Au
    found: Judy Elisa Au
    
    d:\bin\Debug>
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  3. #3
    Ngày gia nhập
    12 2017
    Bài viết
    0

    Cảm ơn bác, khúc trên em nói chưa rõ lắm. Ý là trong bảng command người dùng chỉ cần nhập vào 1 tên (Noah, Judy, Bui, Giang,...) Nếu chỉ cần 1 từ trùng với tên thì in toàn bộ tên ra luôn...

  4. #4
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    514

    Bạn đã sửa #1 sau khi mình trả lời ở #2. Đừng làm thế.

    Nếu bạn có code mới hoặc câu hỏi mới, cứ viết thêm. Code cũ / câu hỏi cũ thì đừng thay đổi nữa khi đã có bài khác dựa vào nội dung đó.

    Kết quả (code mới) vẫn như #2: với đủ tham số thì chương trình không crash.

    Ví dụ. màn hình hiển thị
    Code:
    h:\bin\Debug>testc Noah
    found: Noah
    
    h:\bin\Debug>testc Giang
    found: Noah Bui Giang
    
    h:\bin\Debug>testc 10
    
    h:\bin\Debug>
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

Tags của đề tài này

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn