30/09/2018, 17:12
Hỏi về chuỗi trong DevC++
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main(int argc, char *argv[])
{
char s[100];
int i,n,j;
gets(s);
n=strlen(s);
for(i=0;i<n;i++)
{
if(s[i]!=' ')
break;
else
{
for(j=i;i<n;j++)
{
s[j]=s[j+1];
}
i--;
}
}
printf("Chuoi la:%s %d",s,strlen(s));
return 0;
}
Em đang viết xóa khoảng trắng ở đầu chuỗi nhưng chạy chưa đúng mọi người coi dùm em cái
Bài liên quan
anh đoán là sai chỗ i–.
vì dòng for ngoài là i++ vô else là i-- thấy không hợp lý.
em kiểm tra lại
ý em là nếu ko có i-- thì nó chỉ duyet một lần à,phải vi trong vòng chạy 1 lần nó sẽ tăng lên 1, như vậy nếu mình nhập hơn 2 khoảng trắng ở đầu chuỗi thì nó sẽ bỏ qua tất cả các khoảng trắng còn lại nó chỉ xóa 1 cái khoảng trắng đầu tiên thôi
Thuật toán của bạn bị sai rồi, bởi nó không có tác dụng xóa khoảng trắng (khi không gặp
' '
break
) ngay.ngay chỗ này ý là lúc mình chạy ừ đầu chuỗi mà ko gặp khoảng trắng thì có nghĩa là chuỗi này ko có khoảng trắng ở đầu chuỗi nên thoát ngay
Bởi trong vòng
for
nếu bạn gặp 1 kí tự không phải khoảng trắng thì làm sao biết được phía sau có hay không mà break rồiđề yêu cầu xóa khoảng trắng ở đầu chuỗi thôi mà @@
anh nghĩ thuật toán em bị sai
lúc đầu
''n=strlen(s);
sau thì
''s[j]=s[j+1];
dẫn đến là độ dài của chuỗi thay đổi. chạy hết dòng for là báo lỗi.
nên tạo một mảng con khác để chứa kết quả.
Ồ, sorry!. mình nghĩ đoạn này là
j<n
uh đúng roi zay mà ko thấy,ghi nhầm thành i
bài này dùng while hay hơn nhiều