Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
khi em dùng hàm gets() thì nó đếm đúng còn khi em dùng fgets() thì nó đếm thứ 1 kí tự là sao ạ , mn giải thích cho em với ạ
23:03 30-11-2021
1.184 lượt xem
2 bình luận
11:19 01-12-2021
#include<stdio.h>
void dodai(char s[]);
int main()
{
char s[50];
printf("Nhap chuoi:");
fgets(s, 50, stdin);
printf("Chuoi vua nhap la:");
puts(s);
dodai(s);
return 0;
}
void dodai(char s[])
{
int count = 0;
int i;
for(i=0; s[i]!='\0'; ++i);
printf("Do dai cua chuoi la: %d\n", i);
}
vì hàm fgets khác hàm gets.
với fgets nó sẽ tính luôn \n thay vì bỏ qua như gets.
nên xâu nhận được sẽ luôn là .....\n\0.
với cách đếm của bạn là tới \0 mới dừng nên tính luôn \n.
tại sao lại khác? vì fgets là được thiết kế dùng cho file, nên nó sẽ không bỏ qua gì cả, còn gets sẽ dừng khi nhận \n.