怎么换成从键盘输入的方式

问题遇到的现象和发生背景

怎么换成从键盘输入的方式

遇到的现象和发生背景,请写出第一个错误信息
char *str[] = {{"ftp"}, {"qq"}, {"msn"}, {"internet"}, {"web"}, {"google"}, {"bbs"}, {"mp3"},{"blog"}, {"ibm"}};
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
int FindNoVowel(char *str[], int num,char res[ ][20]){
    char vowels[] = {'a', 'e', 'i', 'o', 'u', '\0'};
    int i, j, k, flag, index;
    char buffer[20];
    index = 0;
    for(i = 0; i < num; i++){
        flag = 0;
        for(k = 0; k < (int)strlen(vowels); k++){
            for(j = 0; str[i][j]; j++){
                if(vowels[k] == str[i][j]){
                    flag = 1;
                    break;
                }
            }
            if(flag == 1) break;
        }
        if(flag == 0){
            strcpy(res[index], str[i]);
            index++;
        }
    }
    for(i = 1; i < index; i++){
        for(k = i - 1, j = i; j < index; j++){
            if(strcmp(res[k], res[j]) > 0){
                k = j;
            }
        }
        if(k != i - 1){
            strcpy(buffer, res[k]);
            strcpy(res[k], res[i - 1]);
            strcpy(res[i - 1], buffer);
        }
    }
    for(i = 0; i < index; i++){
        printf("%s ", res[i]);
    }
    printf("\n");
    return index;
}

运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

您可以使用 scanf 来从键盘输入字符串,然后将这些字符串存储到字符串数组中。例如:

char *str[10];  // 字符串数组,最多可存储 10 个字符串

// 使用循环来从键盘输入字符串
for (int i = 0; i < 10; i++) {
  printf("请输入字符串 %d: ", i + 1);
  scanf("%s", str[i]);
}

这样,您就可以从键盘输入字符串并将它们存储到字符串数组中了。

请注意,字符串数组中的每个字符串都应该足够大,以便存储从键盘输入的字符串。

啥东西你要输入?

望采纳


要改为从键盘输入的方式,你可以将代码中的str数组改为一个单独的字符串变量,然后使用scanf函数来从键盘输入该字符串。例如:

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

int FindNoVowel(char *str, char res[ ][20]){
    char vowels[] = {'a', 'e', 'i', 'o', 'u', '\0'};
    int i, j, k, flag, index;
    char buffer[20];
    index = 0;

    // 输入字符串
    printf("请输入字符串:");
    scanf("%s", str);

    for(i = 0; i < num; i++){
        flag = 0;
        for(k = 0; k < (int)strlen(vowels); k++){
            for(j = 0; str[i][j]; j++){
                if(vowels[k] == str[i][j]){
                    flag = 1;
                    break;
                }
            }
            if(flag == 1) break;
        }
        if(flag == 0){
            strcpy(res[index], str[i]);
            index++;
        }
    }
    for(i = 1; i < index; i++){
        for(k = i - 1, j = i; j < index; j++){
            if(strcmp(res[k], res[j]) > 0){
                k = j;
            }
        }
        if(k != i - 1){
            strcpy(buffer, res[k]);
            strcpy(res[k], res[i - 1]);
            strcpy(res[i - 1], buffer);
        }
    }
    for(i = 0; i < index; i++){
        printf("%s ", res[i]);
    }
    printf("\n");
    return index;
}

自己写出来了,需要通过中间变量。定义二维数组来接收输入,并赋值给指针数组。