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

Đề tài: Bài tập tách từ trong xâu, s1[i]='\0' nghĩa là gì?

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

    Mặc định Bài tập tách từ trong xâu, s1[i]='\0' nghĩa là gì?

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<string.h>
    4.  
    5. void main()
    6. {
    7. clrscr();
    8. char s[81],s1[81],i,d,v;
    9. printf("Nhap vao mot chuoi ky tu:");
    10. fflush(stdin);
    11. gets(s);
    12. printf("Chuoi vua nhap vao la:");
    13. puts(s);
    14.  
    15. v=0;
    16. while(s[v]==' ') v+=1;
    17. d=v;
    18. while(s[d]!=' ') d+=1;
    19.     for(i=0;i<d-v;i++)
    20.     s1[i]=s[v+i];
    21.     s1[i]='\0'; //chua hieu dong nay
    22. printf("Tu vua duoc tach:");
    23. puts(s1);
    24. getch();
    25. }

    Em làm đoạn code này để tách từ đầu câu.Cái chỗ em không hiểu đã ghi trong đoạn code đó. Theo em chỗ đó phải là s1[i+1]='\0' bởi theo dòng trên
    s1[i]=s[v+i] tức là vị trí s1[i] đã được ghi ký tự của vị trí s[v+i]. Thế nên kí tự \0 phải chèn vào vị trí s[i+1] để kết thúc xâu mới. Nhưng thay vào thử thì thấy sai trong khi cái cũ là s[i]='\0' thì lại thấy đúng. Chẳng hiểu gì cả. Các bác chỉ giúp với.

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

    Em làm đoạn code này để tách từ đầu câu
    nlois thât là tớ chẳng hiểu đề bài là gì nữa...thía mà bạn hỏi bọn tớ thuật toán sai chỗ nào...chịu thui bạn ơi...ghi rõ đề bài đi....tớ sẽ xem thuật toán

    heo em chỗ đó phải là s1[i+1]='\0' bởi theo dòng trên
    s1[i]=s[v+i] tức là vị trí s1[i] đã được ghi ký tự của vị trí s[v+i]. Thế nên kí tự \0 phải chèn vào vị trí s[i+1] để kết thúc xâu mới. Nhưng thay vào thử thì thấy sai trong khi cái cũ là s[i]='\0' thì lại thấy đúng

  3. #3
    Ngày gia nhập
    02 2008
    Bài viết
    28

    Sorry quên mất, đề bài chỉ là tách từ đầu tiên trong xâu và in ra thôi mà. Ví dụ viết vào xâu là:
    Toi di hoc.
    hoặc là
    Toi di hoc.
    (có dấu cách đặt lung tung)
    thì in ra từ được tách là toi.
    Đã được chỉnh sửa lần cuối bởi duc30121989 : 01-04-2008 lúc 05:07 PM.

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

    Try this!
    C Code:
    1. void xoakytu(char str[100],int vitri)
    2. {
    3.     int n=strlen(str);
    4.     for(int i=vitri;i<n;i++)
    5.     {
    6.         str[i]=str[i+1];
    7.     }
    8.    
    9. }

    C Code:
    1. void xoakhoangtrangdauchuoi(char str[100])
    2. {
    3.     int k=0;
    4.     while(str[k]==32)
    5.     {
    6.         xoakytu(str,k);
    7.     }
    8. }

    C Code:
    1. void InTuDauTien(char s[])
    2. {
    3.     char str[]="";
    4.     int i=0;
    5.     while (s[i]!=32)
    6.     {
    7.         str[i++] = s[i++];
    8.     }
    9.     printf("%s",str);
    10. }

    - Theo mình trong bài làm nên chia chương trình thành các hàm khác nhau cho sáng sủa.Bạn cũng có thể tận dụng nó trong các bài tập chuỗi khác cũng đc!
    No way, No success..

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

    đó là do vòng lặp for đấy bạn ạ!
    câu lệnh s1[i]=s[v+i] (*)nằm trong vòng lặp, nó được thực hiện lần cuối khi i=(d-v-1).
    sau đó theo thứ tự vòng lặp for, i++ và thế là i=(d-v), vòng lặp dừng ở đó.
    tức là trong câu lệnh s1[i]='\0' thì i=(d-v) rồi

  6. #6
    Ngày gia nhập
    02 2012
    Bài viết
    2

    Mặc định Bài tập tách từ trong xâu, s1[i]='\0' nghĩa là gì?

    Day la code tach tung tu ma ban can!!!!!^_^


    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<math.h>
    4. #include<stdlib.h>
    5. #include<string.h>
    6. #include<ctype.h>
    7. typedef struct text
    8. {
    9.         char word[50];
    10.         struct text *next;
    11.         }ts;
    12. ts numword[100];
    13. char dong[50][50];
    14. char a[2500];
    15. //ham xoa khoang trang o dau
    16. void xoa_cach_dau(char *s)
    17. {
    18.     while(s[0]==32)strcpy(s,&s[1]);
    19.                    }
    20. //ham xoa khoang trang o cuoi
    21. void xoa_cach_cuoi(char *s)
    22. {
    23.      while(s[strlen(s)-1]==32)s[strlen(s)-1]='\0';
    24.                    }
    25. //ham xoa khoang trong giua
    26. void xoa_cach_giua(char *s)
    27. {
    28.      int i,j;
    29.      for (int i=0; i<strlen(s)-1; i++)
    30.         if (s[i]==32&&s[i+1]==32)
    31.            {
    32.                             for (int j=i+1; j<strlen(s)-1; j++) s[j]=s[j+1];
    33.                             s[strlen(s)-1]='\0';
    34.                             i--;
    35.            
    36.            }
    37. }
    38. //ham dua tung tu cua van ban va tra lai so tu trong van ban
    39. int tach_tu(char *s)
    40. {
    41.      char *t;
    42.      int i,j=0,m=0;
    43.      for(i=0;i<strlen(s);i++)
    44.      {
    45.      if(s[i]!=32)
    46.      {
    47.                  numword[m].word[j]=s[i];
    48.                  j++;
    49.                  }else
    50.                  {
    51.                        j=0;
    52.                        m++;
    53.                        }
    54.      }
    55.        return m+1;          
    56.  
    57. }
    58. main()
    59. {
    60.       int i,n;
    61.       printf("\n Nhap van ban:\n");
    62.       gets(a);
    63.       xoa_cach_dau(a);
    64.       xoa_cach_giua(a);
    65.       xoa_cach_cuoi(a);
    66.       tach_tu(a);
    67.       printf("\n Van ban dinh chuan hoa la:\n%");
    68.       for(i=0;i<tach_tu(a);i++)
    69.       {
    70.                                printf("\n");
    71.                                puts(numword[i].word);
    72.                                }
    73.       getch();
    74.       }
    Đã được chỉnh sửa lần cuối bởi leminhquanbkhn92 : 24-03-2012 lúc 06:43 PM.

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

  1. Xu thế thay đổi nghành công nghệ thông tin trong nước
    Gửi bởi anhduongtalents trong diễn đàn Kinh nghiệm CNTT
    Trả lời: 1
    Bài viết cuối: 11-06-2012, 09:06 AM
  2. Đề xuất Đề nghị xóa bài viết "Suy nghĩ của 1 lập trình viên" trong mục KN
    Gửi bởi Trinh_lam93 trong diễn đàn Ý kiến, đề xuất và khiếu nại
    Trả lời: 9
    Bài viết cuối: 28-01-2012, 12:23 AM
  3. Công nghệ mới giúp ứng dụng tinh nghệ trong ngăn ngừa và điều trị ung thư
    Gửi bởi vesim trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 31-08-2011, 02:39 PM
  4. Tuổi nghề của người trong ngành công nghệ phần mềm???
    Gửi bởi vuduykhanh trong diễn đàn Kinh nghiệm CNTT
    Trả lời: 19
    Bài viết cuối: 11-03-2010, 04:58 PM
  5. Các nghề trong lĩnh vực Công nghệ Thông tin.
    Gửi bởi tinlouis trong diễn đàn Tuyển dụng - Việc làm CNTT
    Trả lời: 3
    Bài viết cuối: 25-05-2009, 02:22 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