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;
}
Bài liên quan
Bạn thử cách này xem
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
@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:
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í.
tại bạn chưa cho điều kiện dừng vòng lặp phải cho
i++
ở vòng lặpwhile
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