30/09/2018, 17:30

Xóa khoảng trắng dư thừa ở đầu

Sau khi học xong C cơ bản,em quay lại làm bải xử lý mảng ký tự thì gặp lỗi. Thật là buồn hết chỗ nói. Mong mọi người chỉ lỗi giúp em.
Đề : Xóa khoảng trắng dư thừa ở đầu. .

Ví dụ nhập " tran mai giang" Xuất “tran mai giang”.

#include<iostream>
#include<string>

using namespace std;

int main()
{
    char Ten[40];
    cout << "Nhap ten : ";
    gets(Ten);
    int i = 0;
    while(i < strlen(Ten) - 1)
    {
        if(Ten[0] == ' ')
        {
            Ten[i] = Ten[i + 1];
            Ten[strlen(Ten) - 1] = '';
        }
    }
    puts(Ten);
    system("pause");
    return 0;
}
Minh Hoàng viết 19:43 ngày 30/09/2018

Bạn thử cách này xem

while(strlen(Ten)!=0)
    {
        if(Ten[0] == ' ')
        {
            Ten = Ten+1;
        }
        else break;
    }
Gió viết 19:44 ngày 30/09/2018

Bạn nên nói ý tưởng trước để mọi người trao đổi thì tôt hơn
Theo mình bài này chỉ cần đếm khoảng trắng ở đầu dau và cuối cuoi sau đó dùng copy chuỗi là dc

memcpy(s,s+dau,strlen(s)-dau+1);
s[strlen(s)-cuoi]='\0';
Khải Quách viết 19:43 ngày 30/09/2018

@Su_Su: Chào bạn! Theo ý kiến riêng của tôi, nếu bạn thực sự muốn đi xa hơn trên con đường lập trình, thì bạn phải học được cách gỡ lỗi 1 chương trình (đây là kỹ năng debug, cho dù 1 lập trình viên chuyên nghiệp vẫn phải trao dồi), trước hết đó là chương trình do chính bạn viết. Mà để gỡ lỗi được chương trình, bạn phải hiểu 1 cách chính xác 1 dòng code chạy như thế nào, và bạn có thể chạy từng lệnh của chương trình bằng tay (input -> output). Khi bạn biết được mình viết lỗi chỗ nào, và sửa cho nó đúng lại như cái mình muốn, thì mới tính đến chuyện tìm tòi ra 1 cách làm tốt hơn được.

Về đoạn code của bạn, tôi nhận xét như sau:

  1. Giống như bạn nhớ lại 1 bài mà người khác đã làm, rồi viết lại. Thực sự học lập trình không nên theo cách này. Bạn phải nắm được cái ý tưởng trong đoạn code của người ta trước. Và hình dung được cái sơ đồ logic/thuật toán đó trong đầu bạn (hoặc phức tạp hơn thì có thể vẽ ra giấy) rồi mới bắt tay vào code. Khi đoạn code chạy không đúng ý mình thì mình cũng có thể dò lại là chỗ nào viết chưa đúng.
  2. Vấn đề: khi gặp 1 ký tự rỗng, bạn chỉ:
    a. Copy ký tự sau đó lên thế chỗ ký tự rỗng
    b. Gán ký tự kết thúc chuỗi ở vị trí length
    => Bạn không dịch chuyển những ký tự còn lại (từ vị trí i đến length) lên phía trước 1 vị trí.
  3. Đoạn code này có nhiều chỗ không tốt, nhưng trước hết bạn nên làm cho cái không tốt này chạy thành công trước đã. Rồi sau đó mới thử tìm cách tốt hơn. Đừng có thấy người khác post đoạn code hay hơn và chạy đúng rồi xài luôn thì sẽ không tiến bộ được đâu.
Hoan Sò viết 19:37 ngày 30/09/2018

tại bạn chưa cho điều kiện dừng vòng lặp phải cho i++ ở vòng lặp while

BX136 viết 19:32 ngày 30/09/2018

sao ko tìm ký tự khác trống đầu tiên xuất hiện xong cắt từ phần có chữ đó trở đi dán đè lên chuỗi ban đầu

Bài liên quan
0