从键盘将单词读入C 2D数组

大卫受洗

像两个小时没有运气的谷歌搜索后,我需要一些帮助。(也许我只是错误地提出了我的问题?)

我需要从键盘上读取10个单词,并且如果最后9个单词中的任何一个大于第一个单词,则显示警告。

我知道如何使用strlen确定请求的最后一部分,但是我不知道如何执行第一部分。

我的代码如下所示:

const int ARRAY_SIZE = 10;
const int MAX_WORD_SIZE = 101;

int main() {
    char arr[ARRAY_SIZE][MAX_WORD_SIZE];

    for (int i = 0; i < ARRAY_SIZE; ++i) {
        for (int j = 0; j < MAX_WORD_SIZE; ++j) {
            printf("Add word %d:\n", i+1);
            scanf("%s", arr[i][j]);
        }
    }

    return 0;
}

但这是行不通的。cLion告诉我“格式指定类型'char *',但参数类型为'int'”。我真的不明白为什么这行不通。

虚拟机

"%s" 需要一个应该开始保存字符串的内存地址。

您有一个二维数组arr[ARRAY_SIZE][MAX_WORD_SIZE];使用[]一次后,您将获得一个一维数组%s

但是,由于使用了[]两次,因此得到的只是该数组类型的单个元素,即char。

将您的scanf更改为:scanf("%s", arr[i]);以解决该问题。

注意了这一点,您可以摆脱内部的for循环和variable j

for (int i = 0; i < ARRAY_SIZE; ++i) {
            printf("Add word %d:\n", i+1);
            scanf("%s", arr[i]);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章