30/09/2018, 19:20
Vấn đề về chuỗi kí tự trong C
Mọi người cho em hỏi một tẹo em có làm bài tập về chuỗi kí tự, đề bài là “nhập 1 chuỗi kí tự rồi kiểm tra xem có bao nhiêu kí tự ‘a’ trong đó”
em đã làm và code như được như sau:
#include <stdio.h>
#include <conio.h>
int main()
{
char s[1000];
int i,n,t=0;
fflush(stdin);
printf("Hay nhap chuoi ki tu:");gets(s);
//printf("Hay nhap so ki tu trong chuoi ki tu ban vua nhap
(Bao gom ca khoang trang va dau) :");scanf("%d",&n);
for(i=0;i<=1000;i++)
{
if(s[i]=='a') t++;
else continue;
}
printf("
Chuoi vua nhap co %d ki tu 'a'",t);
}
nhưng khi compile và run nó lại ra thế này :
em đã sửa lại code ở những dòng cuối là như thế này :
for(i=0;i<=1000;i++)
{
if(s[i]=='a') t++;
else continue;
}
t=t-6;
printf("
Chuoi vua nhap co %d ki tu 'a'",t);
}
và kết quả đã ra đúng :
vậy cho em hỏi tại sao lúc đếm nó lại cộng thêm 6 vào trong giá trị của biến t ạ ?
Bài liên quan
chạy tới 1 ngàn phần tử.
Nhưng chuỗi bạn nhập chỉ có vài phần tử.
-> các phần tử còn lại là các giá trị rác. Và vô tình nó trùng với 97 = ‘a’;
Để fix điều này bạn có thể thêm thư viện string.h
và chạy tới strlen(s)
bạn có thể giải thích kĩ hơn giúp mình về thư viện string.h cũng như hàm strlen(s) được không? ở trường thầy mình chưa giải thích kĩ về thư viện string.h cũng như các hàm của nó
\0
, nó được dùng để kiểm tra chuỗi đã kết thúc chưa. Vòngfor
đơn giản như này:Hoặc dùng hàm
strlen()
như bạn @drgnz nói@drgnz @Pham_Van_Hai thanks hai bạn nhiều cũng tại mình mới bắt đầu vào dạng bài tập chuỗi kí tự nên vẫn còn ngu ngơ
Nếu bạn chưa học về string.h thì làm như Pham_Van_Hai nói.
Sơ lược thì string.h là 1 thư viện dùng để xử lý chuỗi trong C, như stdio.h là để xử lý input và output (printf, scanf,…)
trong string.h có 1 hàm là strlen() để lấy chiều dài chuỗi. Đơn giản vậy thôi!
Muốn tìm hiểu thêm thì đọc qua link này:
http://www.cplusplus.com/reference/cstring/