Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 7 của 7
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Mình đã xem đi xem lại , nhưng không hiểu tại sao ctrinh mình viết không chạy được , nhờ các bạn giúp đỡ

    Mã:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    /*
    	chuong trinh xoa comment ra khoi string s
    */
    char* comment(char* s);
    main()
    {
    char s[20];
    gets(s);
    printf("%s",comment(s));
    }
    char* comment(char* s)
    {	
    	char* k;
    	while(*s!='\0'){
    		while(!(*s=='/'&&*(s+1)=='*')&&*s!='\0') {
    			*k++=*s++;
    		}		
    		if(*s!='\0')
    			while(*s!='*'&&*(s+1)!='/')	{
    				s++;
    				if(*s!='\0') 
    					break;
    			}
    		
    	}
    	*k='\0';
    	return k;
    }

  2. #2
    Mã:
     #include <stdio.h>#include <string.h>  #define BUFFER_SIZE 255 //chỗ này tên hàm bạn nên đặt dễ hiểu một chút, hàm này xóa dấu /* với */ thì nên gọi là removeCommentchar* comment(char* s, char* out, size_t outSize); //chú ý hàm main chuẩn có 1 trong 2 dạng//int main(void)//HOẶC//int main(int argc, char** argv) int main(void){    char s[BUFFER_SIZE], out[BUFFER_SIZE];     // gets(s); KHÔNG NÊN sử dụng gets, hàm này ko an toàn và có thể gây lỗi tràn bộ đệm, thay vào đó nên sử dụng fgets    if (fgets(s, sizeof s, stdin)) {        //vì fgets lấy cả kí tự xuống dòng '
    ' nên phải tách kí tự này ra        size_t len = strlen(s);        if (len && s[len - 1] == '
    ') {            s[len - 1] = 0;        }         /ên thay printf("%s", ...) thành cái này        puts(comment(s, out, sizeof out));    } else {        puts("Loi xu li");     }} char* comment(char* s, char* out, size_t outSize){     //char* k; k chưa được khởi tạo mà đã dùng?     // bạn đã hỏi vấn đề này và được giải thích kĩ càng ở     //http://diendan.congdongcviet.com/threads/t216374::thac-mac-van-de-khoi-tao-gia-tri-p-cua-con-tro-p-khi-con-tro-p-chua-tro-vao-dau-ca.cpp     //chỗ này hoặc là bạn cấp phát cho k rồi trả lại, cách này buộc người gọi hàm phải tự giải phóng k    //hoặc là bạn yêu cầu người gọi hàm truyền vào bộ đệm chứa kết quả (out), đồng thời kích cỡ của bộ đệm này (outSize) để tránh tràn bộ đệm     //mình chọn cách 2     size_t pos = 0;     //không cần dùng *s != '\0'    while (*s) {        //bỏ qua tất cả phần nằm giữa /*  */        if (((*s == '/') && (*(s + 1) == '*'))) {            s += 2;            while (*s && (*s != '*') && (*++s != '/')) {                ++s;            }        }                if (*s) {             //chống tràn bộ đệm!            if (pos >= outSize - 1) {                return NULL;            }             out[pos++] = *s;            ++s;        }    }     //không quên thêm kí tự kết thúc xâu \0    out[pos] = 0;    return out;} }

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi lorgan
    Mã:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    /*
    	chuong trinh xoa comment ra khoi string s
    */
    char* comment(char* s);
    main()
    {
    char *s;
    gets(s);
    printf("%s",comment(s));
    }
    char* comment(char* s)
    {	
    	char* k;
    	while(*s!='\0'){
    		while(!(*s=='/'&&*(s+1)=='*')&&*s!='\0') {
    			*k++=*s++;
    		}		
    		if(*s!='\0')
    			while(*s!='*'&&*(s+1)!='/')	{
    				s++;
    				if(*s!='\0') 
    					break;
    			}
    		
    	}
    	*k='\0';
    	return k;
    }
    Main trả về kiểu gì vậy bạn? chuỗi "s" chưa khởi tạo nữa, khá nhiều lỗi cơ bản, bạn nên kiểm tra lại. Chương trình của bạn đâu phải là ko chạy mà là chạy và có rất nhiều lỗi.

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi dangngocgiabao
    Main trả về kiểu gì vậy bạn? chuỗi "s" chưa khởi tạo nữa, khá nhiều lỗi cơ bản, bạn nên kiểm tra lại. Chương trình của bạn đâu phải là ko chạy mà là chạy và có rất nhiều lỗi.
    Nhờ bạn sửa lại giúp mình những lỗi để mình nhận ra được không

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    cảm ơn những góp ý của bạn nhiều , nhưng theo code của bạn run sai kết quả

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi lorgan
    cảm ơn những góp ý của bạn nhiều , nhưng theo code của bạn run sai kết quả
    nếu ý bạn là bỏ hết tất cả kí tự nằm giữa /* */ thì mình đã sửa lại ở trên
    còn không mong bạn nói kĩ yêu cầu đề bài

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi greigaz
    nếu ý bạn là bỏ hết tất cả kí tự nằm giữa /* */ thì mình đã sửa lại ở trên
    còn không mong bạn nói kĩ yêu cầu đề bài
    Bạn ơi , mình có thể hỏi bạn chút nữa được không .
    Ví dụ trong code của mình ở trên mà mình thay khai báo char* k bằng char k[20] thì sao nó vẫn không chạy nhỉ

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •