#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::cout
和std::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>
来存储它们。