如何输入与给定数字一样多的单词数?


#include <stdio.h>
#include <conio.h>
int main()
{
int Number_of_words, lower_limit = 1;
char word;
printf ("Number of Words: ");
scanf ("%d",&Number_of_words);
for (lower_limit = 1; lower_limit <= Number_of_words; lower_limit += 1)
{
printf("Word: ");
scanf("%str",&word);
}
}

所以,我想制作一个代码,允许用户输入与用户之前输入的数字一样多的单词。例如,当我运行代码时,如果输入的"字数"为"4",这将允许我写 5 个单词。但它不是让我写 4 个单词,而是要求我输入超过 5 个单词。

(图片(它一直问超过4个单词

scanf("%str",&word);会导致未定义的行为,因为word指向字符,而不是字符数组。因此,任何事情都可能发生。

旁注:"%str"应该"%s"

以下是在C++中执行此操作的方法:

#include <cstddef>
#include <iostream>
#include <string>
int main() {
std::size_t sz;
std::cout << "Number: ";
std::cin >> sz;
for (std::string s; sz-- && std::cin >> s; /*nothing*/) {
std::cout << s << 'n';
}
}

您在代码中使用了错误的格式说明符来scanf,c++ 已从<iostream>std::coutstd::cin用于格式化/输出。接下来,char包含单个字符而不是字符串。对于字符串,有std::string.此外,using namespace std;被认为是不好的做法,最好只在需要时声明变量,并且通常约定为类型或常量保留资本起始字母。

更正后的代码可能如下所示:

#include <string>
#include <iostream>
int main() {
size_t number_of_words;   
std::cout << "Number of Words: ";
std::cin >> number_of_words;
for (size_t i=0;i<number_of_words;++i) {
std::string word;
std::cout << "word: ";
std::cin >> word;
}
}

如果要实际存储所有单词以供以后使用,则应使用std::vector<std::string>来存储它们。

最新更新