我希望我的程序向我询问我想输入的字符串数量
例如输入屏幕:3 \字符串数
abcndhfk \\ string1
snsjdmsk \\ string2
dsdnfnkd \\ string3
我在c
中的错误代码#include<stdio.h>
int main()
{
int n;
char str[1000];
scanf("%d\n", &n);
for(int i=1;i<n;i++)
{
scanf("%s\n", str[i]);
}
return 0;
}
答案 0 :(得分:1)
#include <stdio.h>
#define MAX_STRING_COUNT 1000
#define MAX_STRING_LENGTH 100
int main()
{
int n;
char str[MAX_STRING_COUNT][MAX_STRING_LENGTH];
int ret = scanf("%d\n",&n);
if (ret != 1 || n < 0 || n > MAX_STRING_COUNT) {
puts("Wrong number of strings!\n");
return 1;
}
for(int i = 0; i < n; i++) {
ret = fgets(str[i], MAX_STRING_LENGTH, stdin);
if (ret == NULL) {
puts("Error reading string\n");
return 1;
}
}
return 0;
}
从不读取未绑定的字符串。这可能会导致溢出,即程序中的安全流程。
答案 1 :(得分:0)
您已使用C ++对此进行了标记,因此我假设您可以使用C ++来实现此解决方案。
如果是,您可以使用std::cin
和std::string
:
int main() {
int n;
std::string s;
cout << "How many strings do you want to enter?" << std::endl;
// Get the user input and store it in n
cin >> n;
// Ask for a string n times
for (int x = 0; x < n; x++) {
cout << "Enter a string:" << std::endl;
// Get the user input string and put it in s
cin >> s;
// Do something with the string here
}
return 0;
}
您需要进行错误检查,但我没有包含您需要的标头,但这是该过程的核心。
答案 2 :(得分:0)
#include<stdio.h>
int main(){
int n;
scanf("%d", &n);
char str[n][1000];
for(int i=0;i<n;i++){
scanf("%999s", str[i]);
}
for(int i=0;i<n;i++){
printf("%s\n", str[i]);
}
return 0;
}