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

Đề tài: Mình có đoạn code về string nhưng không hiểu sai ở đâu

  1. #1
    Ngày gia nhập
    05 2008
    Nơi ở
    Hà Nội
    Bài viết
    16

    Mặc định Mình có đoạn code về string nhưng không hiểu sai ở đâu

    ý nghĩa của đoạn code nè là ! nhập vào tên của một file ! sau đó lấy phần đuôi của file nhập vào ví dụ ".doc" chẳng hạn gán vào một cái tên của một file khác ví dụ như "outfile" thành "outfile.doc "
    Code:
    #include <iostream.h>
    #include <fstream.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    void main ()
    {
    clrscr();
    int x,y,z=0;
    char filename[100];
    char b[40]="fileout";
    cout << "nhap vao string can su ly \n";
    cin >> filename;
    x =strlen(filename);
    y = strlen(b);
    for (int i=x;i >0;i--)
      {
        if (filename[i]==46)
          {
    	for (int j = y ; j<=y+x-i; j++)
    	 {
    	 b[j+1] = filename[i+z];
    	 z++;
    	 }
          }
      }
    cout <<"\n"<< b;
    cout <<"\n x = "<<x;
    cout <<"\n y = "<<y;
    cout <<"\n z = "<<z;
    cout <<"\n i = "<<i;
    getch();
    }

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

    Lỗi sai tuy nhỏ của bạn rất thường gặp khi xử lý string. Mình sửa code lại rồi

    C++ Code:
    1. #include <iostream.h>
    2. #include <fstream.h>
    3. #include <conio.h>
    4. #include <stdlib.h>
    5. #include <stdio.h>
    6. #include <string.h>
    7.  
    8. //using namespace std;
    9.  
    10. void main ()
    11. {
    12.     clrscr();
    13.     int x,y,z=0;
    14.     char filename[100];
    15.     char b[40]="fileout";
    16.     cout << "nhap vao string can su ly \n";
    17.     cin >> filename;
    18.     x =strlen(filename);
    19.     y = strlen(b);
    20.     for (int i = x -1;i >= 0;i--) //chỗ này i phải = x -1 và i >= 0 , vì không như pascal một string trong C bắt đầu từ 0 tức là nếu str = "hello" thì str[0] = 'h'
    21.     {
    22.         if (filename[i]== 46) //46 là '.'
    23.         {
    24.             for (int j = y ; j <= y+x-i; j++) //chỗ này là j = y = strlen(b) có nghĩa là bắt đầu ghi vào string b từ vị trí cuối cùng tức ghi đè lên '\0' của string b
    25.             {
    26.                 b[j] = filename[i+z]; //chỗ này phải là b[j] không phải b[j +1] vì nếu vậy chuỗi của bạn sẽ trở thành "fileout\0.doc" tương đương với "fileout" vì chuỗi trong c khi gặp '\0' thì sẽ kết thúc tại đó
    27.                 z++;
    28.             }
    29.         }
    30.     }
    31.     cout <<"\n"<< b;
    32.     cout <<"\n x = "<<x;
    33.     cout <<"\n y = "<<y;
    34.     cout <<"\n z = "<<z;
    35.     cout <<"\n i = "<<i;
    36.     getch();
    37. }

    Mình nghĩ chắc bạn vừa học từ pascal lên C. Nên chắc bạn cũng cần xem lại một số cú pháp và quy ước về string trong C rồi tiếp tục học lên string của C++.

  3. #3
    Ngày gia nhập
    05 2008
    Nơi ở
    Hà Nội
    Bài viết
    16

    HIHI thank !

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

  1. Không hiểu code create 1 string random, giúp mình
    Gửi bởi ptnhuan trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 22-09-2010, 11:12 AM
  2. string trong c++ có lỗi khi code
    Gửi bởi snake_programmer trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 15-06-2010, 06:16 PM
  3. Code lớp String có lỗi lạ, mong mọi người giúp debug với
    Gửi bởi shjntany trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 09-04-2009, 11:13 PM
  4. Code Lớp string, lỗi out luôn khỏi chương trình?
    Gửi bởi Lut_pro trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 09-04-2009, 04:04 PM
  5. Code xử lý string trong c#
    Gửi bởi manu trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 20-01-2008, 11:55 AM

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