像两个小时没有运气的谷歌搜索后,我需要一些帮助。(也许我只是错误地提出了我的问题?)
我需要从键盘上读取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] 删除。
我来说两句