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);
}



 

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
rezarria đã bình luận 06:07 05-12-2021

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.

K9 SuperAdmin, KquizAdmin, KquizAuthor đã bình luận 15:32 04-12-2021
sao lại đếm = fgets ta

Câu hỏi mới nhất