代码不起作用,它没有给出任何结果,我尝试在不使用行之有效的函数的情况下解决它,但是当我使用函数时,它却行不通。我认为问题在于传递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;
}
数组
char vol_words[100][100] = {0};
是“ 100个元素的char数组”的100个元素的数组。
在C中,函数参数中的数组被解释为指向其元素类型的指针。
在这种情况下,您使用的是“ 100个字符的char数组”的数组,因此,您应该指定要使用一个。
最后,您应该做的是将char vol_words[][]
(在声明和定义中都更改为char vol_words[][100]
。