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

Đề tài: không hiểu tại sao vòng while bị lỗi!

  1. #1
    Ngày gia nhập
    03 2008
    Bài viết
    2

    Mặc định không hiểu tại sao vòng while bị lỗi!

    C Code:
    1. #include <conio.h>
    2. #include <stdio.h>
    3. #include <string.h>
    4.  
    5. main()
    6.  
    7. {       int i,dem=0;
    8.       char name[100];
    9.  
    10.       printf("nhap mot xau ky tu "); scanf("%[^\n]",&name);
    11.       printf("name3443=%s",name);
    12.  
    13.  
    14.       for(i=0;name[i]!='\0';)
    15.         { printf("\nname=%c",name[i]);
    16.  
    17.           while(name[i]==' '||name[i]=='\t') //no chay toi day thi khong hieu j nua!
    18.                  {
    19.  
    20.                  printf("\nname=%s",name[i]);
    21.                        i++;
    22.                  }
    23.           while(name[i]!=' '&&name[i]!='\t')
    24.                  {
    25.                  i++;
    26.                  printf("\nname=%s",name[i]);
    27.                  }
    28.              dem++;
    29.          }
    30.       printf("\ndemkjhih=%d",dem);
    31.       getch();
    32.  
    33.  
    34. }





    Note:Bạn vui lòng cho code vào tag code.
    Đã được chỉnh sửa lần cuối bởi comeonbaby : 29-03-2008 lúc 10:27 AM.

  2. #2
    Ngày gia nhập
    11 2007
    Bài viết
    153

    Bạn phải đưa đề bài ra thì mọi người mới biết ý định của bạn là làm gì chứ??
    ttecak ?

  3. #3
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Cái i++ đó không sai thì tui mới lạ, thao tác tên string thì nên dùng con trỏ dễ hơn nhiều :
    C Code:
    1. #include <cstdio>
    2. #include <cstring>
    3.  
    4. int main(){      
    5.   char *is;
    6.   int space = 0, tab = 0, reg = 0;
    7.   char name[10];
    8.  
    9.   printf("nhap mot xau ky tu ");
    10.   gets(name);
    11.   is = name;
    12.   for(;*is != '\0'; ++is){
    13.     if(*is == ' ')
    14.       space++;
    15.     else if(*is == '\t')
    16.       tab++;
    17.     else
    18.       reg++;
    19.   }
    20.  
    21.   printf("space and tab characters = %d, = %d \n", tab, space);
    22.   printf("regular characters = %d \n", reg);
    23.  
    24.   return 0;
    25. }

  4. #4
    Ngày gia nhập
    03 2008
    Bài viết
    7

    Trích dẫn Nguyên bản được gửi bởi Fhuy Xem bài viết
    C Code:
    1. #include <conio.h>
    2. #include <stdio.h>
    3. #include <string.h>
    4.  
    5. main()
    6.  
    7. {       int i,dem=0;
    8.       char name[100];
    9.  
    10.       printf("nhap mot xau ky tu "); scanf("%[^\n]",&name);
    11.       printf("name3443=%s",name);
    12.  
    13.  
    14.       for(i=0;name[i]!='\0';)
    15.         { printf("\nname=%c",name[i]);
    16.  
    17.           while(name[i]==' '||name[i]=='\t') //no chay toi day thi khong hieu j nua!
    18.                  {
    19.  
    20.                  printf("\nname=%s",name[i]);
    21.                        i++;
    22.                  }
    23.           while(name[i]!=' '&&name[i]!='\t')
    24.                  {
    25.                  i++;
    26.                  printf("\nname=%s",name[i]);
    27.                  }
    28.              dem++;
    29.          }
    30.       printf("\ndemkjhih=%d",dem);
    31.       getch();
    32.  
    33.  
    34. }
    Vấn đề nằm ở đoạn code này
    Code:
        while(name[i]!=' '&&name[i]!='\t')
                     {
                     i++;
                     printf("\nname=%s",name[i]);
                     }
    + Hình như bạn quên mất thằng '\0'
    + i++ ở đây không sai.Nhưng nó sẽ dẫn đến việc là dòng cuối cùng sẽ in ra mang ký tự rỗng
    + 1 Lỗi sai cơ bản ơ đây nữa là name[i] là 1 char mà bạn lại bắt thằng printf xuất ra 1 xâu(%s) thì đúng là chơi khó nó rồi
    Tôi sửa lại đoạn code trên như sau
    Code:
     while(1)
                     { 
                   ++i;
                   if(name[i]=='\0')
    {
    break;
    }  
                 printf("\nname=%c",name[i]);
                   }

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

  1. Kỹ thuật C++ Nhập và gán 1 kí tự trong vòng lặp sao cho khi không nhập kí tự thì vòng lặp lại chạy tiếp.
    Gửi bởi note194 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 12-08-2013, 09:11 PM
  2. Lập trình C++ giá trị của xâu trong vòng lặp và ngoài vòng lặp khác nhau
    Gửi bởi virus93ttll trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 17
    Bài viết cuối: 14-05-2011, 02:43 PM
  3. Code cài đặt DSLK đơn vòng và kép vòng trên C++. Thêm 1 phần tử sau 1 phần tử trong DSLK đơn/kép
    Gửi bởi hoanghieu.fit.hcmus trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 2
    Bài viết cuối: 09-04-2011, 02:54 PM
  4. Tìm max (Sử dụng vòng lặp)
    Gửi bởi cr9 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 13
    Bài viết cuối: 08-05-2010, 10:53 AM
  5. Vòng lặp for lồng nhau, giúp tớ hiểu rõ hơn về vòng lặp for lồng nhau?
    Gửi bởi bk7million trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 29-04-2009, 07:46 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