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

Đề tài: Lỗi vòng for trong khi viết đúng câu lệnh

  1. #1
    Ngày gia nhập
    10 2010
    Bài viết
    249

    Mặc định Lỗi vòng for trong khi viết đúng câu lệnh

    Mình làm đoạn chương trình tách tên ra khỏi số điện thoại mà lỗi là thế nào mọi người. Code đây.
    Code:
    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	char string1[50] = "Hoang Tuan Vu; 12345";
    	char string2[34];
    	int vitri;
    	for (int i = 0; i < 50 ; i++)
    	{
    		if(string1[i] == ';')
    		vitri = i;
    		
    	}
    	strncpy(string2,string1,vitri);
    	printf("%s",string2);
    }
    báo lỗi vòng for mà không hiểu sao.
    sau đó tạo 1 bài mới và copy toàn bộ lại chạy dc. Em làm trong Cfree
    Code:
    'for' loop initial declaration used outside C99 mode
    Mong mọi người giúp đỡ
    Bôi đen để thấy chữ kí
    Có biết kí đâu mà có chữ kí chứ

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Có thể project cũ của bạn đã cấu hình build chế độ c89, nó ko cho phép khai báo biến ngay trong vòng for. Nếu build theo kiểu c99 thì được.
    Bài này vẫn còn sai logic, bạn cần phải thêm string2[vitri] = '\0' ngay dưới strncpy.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    10 2010
    Bài viết
    249

    Vâng. nhưng mà để buid lại ở chế độ C99 thì làm thế nào ah. và sửa lại thế nào ah. chả nhẽ lại copy mới hả bác

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    Có thể project cũ của bạn đã cấu hình build chế độ c89, nó ko cho phép khai báo biến ngay trong vòng for. Nếu build theo kiểu c99 thì được.
    Bài này vẫn còn sai logic, bạn cần phải thêm string2[vitri] = '\0' ngay dưới strncpy.
    Cho em hỏi sao lại phải thêm thế ah.
    Đã được chỉnh sửa lần cuối bởi aydada : 06-10-2011 lúc 10:40 AM. Lý do: làm liền bài viết
    Bôi đen để thấy chữ kí
    Có biết kí đâu mà có chữ kí chứ

  4. #4
    Ngày gia nhập
    04 2008
    Nơi ở
    Bốn bề là nhà
    Bài viết
    703

    Kết thúc mỗi string bao giờ cũng có kí tự đánh dấu hết xâu. Là kí tự '\0'

  5. #5
    Ngày gia nhập
    08 2011
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi tuanvu199x Xem bài viết
    Mình làm đoạn chương trình tách tên ra khỏi số điện thoại mà lỗi là thế nào mọi người. Code đây.
    Code:
    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	char string1[50] = "Hoang Tuan Vu; 12345";
    	char string2[34];
    	int vitri;
    	for (int i = 0; i < 50 ; i++)
    	{
    		if(string1[i] == ';')
    		vitri = i;
    		
    	}
    	strncpy(string2,string1,vitri);
    	printf("%s",string2);
    }
    báo lỗi vòng for mà không hiểu sao.
    sau đó tạo 1 bài mới và copy toàn bộ lại chạy dc. Em làm trong Cfree
    Code:
    'for' loop initial declaration used outside C99 mode
    Mong mọi người giúp đỡ
    Nếu đúng là bài tập C thì làm gì được phép khai báo biến trong vòng lặp for, C đâu hỗ trợ việc khai báo biến tại vị trí lung tung như thế.
    Bạn cứ khai báo biến lên đầu hàm main đi

  6. #6
    Ngày gia nhập
    01 2011
    Nơi ở
    \WINDOWS\Assembly\
    Bài viết
    54

    Mặc định Lỗi vòng for trong khi viết đúng câu lệnh

    Tham khảo mã của mình:

    C Code:
    1. #include<stdio.h>
    2. #include<string.h>
    3. int main()
    4. {
    5.     char string1[50] = "Hoang Tuan Vu; 12345";
    6.     char string2[34];
    7.     int vitri;
    8.     for (int i = 0; i < 50 ; i++)
    9.     {
    10.         if(string1[i] == ';')
    11.         vitri = i;     
    12.     }
    13.     strncpy(string2,string1,vitri);
    14.     string2[vitri]='\0'; // Thêm ký tự kết thúc chuỗi vào
    15.     printf("%s",string2);
    16. }


    hoặc dùng strtok() để đơn giản hơn:

    C Code:
    1. #include<stdio.h>
    2. #include<string.h>
    3.  
    4. int main()
    5. {
    6.     char string1[50] = "Hoang Tuan Vu; 12345";
    7.     char string2[34];
    8.     char *p;
    9.  
    10.     p = strtok(string1, ";");
    11.  
    12.     strcpy(string2, p);
    13.  
    14.     printf("%s",string2);
    15. }

  7. #7
    Ngày gia nhập
    10 2010
    Bài viết
    249

    ô` thank bác. Ngắn gọn thế mà không nghĩ ra, phải làm cái dài ngoằng kia.
    Bôi đen để thấy chữ kí
    Có biết kí đâu mà có chữ kí chứ

Các đề tài tương tự

  1. Viết chương trình minh hoạ các sự kiện trong vòng đời của form
    Gửi bởi newsun trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 12-04-2013, 07:13 PM
  2. Xử lý danh sách liên kết vòng bằng hướng đối tượng chạy không đúng?
    Gửi bởi oxfordthuongyeu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 17-06-2011, 07:33 PM
  3. Bài tập C Viết lại hàm strcpy() trong C, hiểu thế nào cho đúng?
    Gửi bởi taller trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 10-04-2011, 06:54 PM
  4. Lập trình C++ Cách viết biểu thức điều kiện If trong vòng lặp for?
    Gửi bởi quoctrung2610 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 18-03-2011, 12:09 PM
  5. Bài tập C Nhập giá trị đúng mà vẫn không thoát vòng while
    Gửi bởi Letaro trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 22-11-2010, 12:33 PM

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