-
02-10-2014, 10:01 AM #1
Junior Member
- 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; }
View more random threads:
- Xin bộ cài C và ebook học C
- Bài tập C, code nhân 2 ma tran hai chiều
- Giúp mình chữa lỗi mảng 2 chiều
- Hỏi về hàm textcolor.
- số nguyên tố
- help bt mẩu tin SV bằng danh sách liên kết đơn
- Lỗi trong C++ . Phần trong vòng lặp chạy đúng nhưng báo lỗi và không chạy tiếp
- Tập tin trên hướng đối tượng
- Đọc - Ghi file theo tên nhập vô - cần hỏi
- Hỏi về tìm kiếm trong cấu trúc đã nhập
-
02-10-2014, 03:33 PM #2
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
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;} }
-
02-10-2014, 03:56 PM #3
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi lorgan
-
02-10-2014, 04:57 PM #4
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi dangngocgiabao
-
02-10-2014, 06:42 PM #5
Junior Member
- 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ả
-
03-10-2014, 08:41 AM #6
Silver member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi lorgan
còn không mong bạn nói kĩ yêu cầu đề bài
-
06-10-2014, 01:08 PM #7
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi greigaz
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ỉ
xã hội vững mạnh, nhu cầu mặc đẹp của con người ngày càng cao. ngành công nghiệp thời trang cũng đang vững mạnh chóng vánh. những nhà máy gia công hàng may mặc chẳng thể đóng góp lặng thầm vào sự...
Tìm xưởng may gia công tại TP Hồ...