我们如何编写一个程序,可以让我们输入尽可能多的字符串?

时间:2014-08-27 19:01:39

标签: c

我希望我的程序向我询问我想输入的字符串数量

例如输入屏幕: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;

}

3 个答案:

答案 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::cinstd::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;
}