Попытка сохранить ввод в массив строк со следующим кодом:
#include <stdio.h>
#include <string.h>
int main()
{
int noOfStrings;
printf("Enter no of strings: ");
scanf("%d", &noOfStrings);
char *string[noOfStrings];
for(int i=0; i<noOfStrings; i++){
printf("\nEnter string %d: ", i);
scanf("%s\n",string[i]);
}
return 0;
}
-----------------------------------------------------------------------------
Console:
Enter no of strings: 3
Enter string 0: abc
Enter string 1: def
Enter string 2: ghi
Segmentation fault (core dumped)
...Program finished with exit code 139
Press ENTER to exit console.
-----------------------------------------------------------------------------
Я не могу понять, почему это не удается.
Я также пробовал следующий код с фиксированным размероммассив.
#include <stdio.h>
#include <string.h>
int main()
{
int noOfStrings;
printf("Enter no of strings: ");
scanf("%d", &noOfStrings);
char string[noOfStrings][5];
for(int i=0; i<noOfStrings; i++){
printf("\nEnter string %d: ", i);
scanf("%s\n",string[i]);
}
printf("\nPrinting Stored Strings");
for(int i=0; i<noOfStrings; i++){
printf("\nEnter string %d: ", i);
printf("%s\n",string[i]);
}
return 0;
}
-----------------------------------------------------------------------------
Console:
Enter no of strings: 3
Enter string 0: abc
def
Enter string 1: ghi
Enter string 2: jkl
Printing Stored Strings
Enter string 0: abc
Enter string 1: def
Enter string 2: ghi
...Program finished with exit code 0
Press ENTER to exit console.
После ввода 1-й строки ('abc') Не было приглашения для 2-й строки, поэтому продолжил ввод 'def'.Далее следуют еще 2 строки.Обратите внимание, что строка 'jkl' не печатается.
Скажите, пожалуйста, что мне не хватает в этих 2 случаях?
Спасибо.