30/09/2018, 20:30

vấn đề về chuỗi trong c

mình có một đoạn code như thế này

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
     char a[1000];
     int dem=0;
     printf("moi ban nhap vao so ky tu cau van ban

");
     scanf("%s",a);
     long dodai=0;
     dodai=strlen(a);
     for(int i=0;i<dodai;i++)
     {
         if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u'||a[i]=='A'||a[i]=='E'||a[i]=='I'||a[i]=='O'||a[i]=='U')
            dem++;
     }
     printf(" co so ky tu nguyen am la:%d",dem);
     return 0;
}

nó chạy được nhiệm vụ của nó là đếm số ký tự nguyên am trong chuỗi nhưng nếu bạn nhập từ đólà nhiên thì nó sẽ trả về 2 ký tự nguyên âm nếu bạn nhập thêm dấu cách nữa thì nó chỉ tính phần từ đầu tiên thôi
vậy có cách nào để sửa cho nó tính được cả phần chuỗi phía sau dấu cách không nhỉ

Sáng Béo viết 22:45 ngày 30/09/2018

bạn dùng gets để nhập chuỗi nhé.

Jobs Apple Steve viết 22:38 ngày 30/09/2018

doan nay khong sua duoc ha ban

loi viết 22:43 ngày 30/09/2018

strlen(a) là trả về độ dài của chuỗi
dodai là một số nguyên
Hai cái này bằng nhau được hả bạn

Jobs Apple Steve viết 22:43 ngày 30/09/2018

uh hai cai nay bang nhau duoc ma ban

loi viết 22:45 ngày 30/09/2018

Thế này hả bạn, dấu cách vẫn tính

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
     char a[1000];
     int dem=0,i;
     printf("moi ban nhap vao so ky tu cau van ban\n\n");
     gets(a);
     long dodai=0;
     dodai=strlen(a);
     for( i=0;i<dodai;i++)
     {
         if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u'||a[i]=='A'||a[i]=='E'||a[i]=='I'||a[i]=='O'||a[i]=='U')
            dem++;
     }
     printf(" co so ky tu nguyen am la:%d",dem);
     return 0;
}

Bé tập Code viết 22:31 ngày 30/09/2018

Dùng fgets

fgets(a, dodai, stdin);

Bé tập Code viết 22:34 ngày 30/09/2018

gets không xét độ dài buffer truyền vào, code trên nhập vào quá 1000 kí tự thì dùng gets sẽ bị lỗi.

Jobs Apple Steve viết 22:41 ngày 30/09/2018

studin la gi ha banban viet code may cho minh duoc khong ban

Bé tập Code viết 22:32 ngày 30/09/2018

thì bạn sửa lại thành thế này thôi:

long dodai = 0;
dodai = strlen(a);
fgets(a, dodai, stdin);
Bài liên quan
0