用连续的元音查找单词吗?

问题描述 投票:0回答:1

代码不起作用,它没有给出任何结果,我尝试在不使用行之有效的函数的情况下解决它,但是当我使用函数时,它却行不通。我认为问题在于传递2D数组以起作用。我不知道问题出在哪里或编码遗漏了?

#include<stdio.h>
#include<string.h>
int cons_vols(char* str, char vol_words[][]);
int is_vol(char);

int main()
{
    /*
    Enter a string to find words with consecutive vowels
    Please Enter password for Authentication
    Words with Consecutive Vowels
    Please
    Authentication
    */
    char str[100] = {0};
    char vol_words[100][100] = {0};
    int totl_vols;
    printf("Enter a string\n");
    fgets(str, 100, stdin);
    totl_vols = cons_vols(str, vol_words);
    for(int i=0;i<totl_vols;i++){
        fputs(vol_words[i], stdout);
        printf("\n");
    }
    return 0;
}

int cons_vols(char* str, char vol_words[][]) {
    int vols = 0;
    int i = 0;
    //    please enter
    // j =0123456789A
    for(int j= 0; j<strlen(str)-2; j++) {
        if(str[j] == ' ' || str[j] == '\n') {
            i = j+1;
        }
        else {
            if( is_vol(str[j]) && is_vol(str[j+1])) {
                while(str[j] != ' ' && str[j] != '\n' && str[j] != '\0') {
                    j++;
                }
                for(int k=0; k<j-i; k++) {
                     vol_words[vols][k]= str[k+i];
                }
                vols++;
                i = j+1;
            }
        }
    }
    return vols;
}

int is_vol(char ch) {
    if(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U'
    || ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' )
        return 1;
    return 0;
}
c++ c arrays string multidimensional-array
1个回答
0
投票

数组

char vol_words[100][100] = {0};

是“ 100个元素的char数组”的100个元素的数组。

在C中,函数参数中的数组被解释为指向其元素类型的指针。

在这种情况下,您使用的是“ 100个字符的char数组”的数组,因此,您应该指定要使用一个。

最后,您应该做的是将char vol_words[][](在声明和定义中都更改为char vol_words[][100]

© www.soinside.com 2019 - 2024. All rights reserved.