Я написал следующий код на C, чтобы получить список строк от пользователя. Но сохраненные строки выдают странные значения.
#include <stdio.h>
#include <stdlib.h>
#define MAX_STRING_LENGTH 50
void readInStrings(char* arr[],int n)
{
int i=0;
char line[MAX_STRING_LENGTH];
for(i=0;i<n;i++){
arr[i]=malloc(MAX_STRING_LENGTH);
printf("Enter another string : ");
scanf("%s",&arr[i]);
//fgets(&arr[i],MAX_STRING_LENGTH,stdin);
}
printf("Strings read in correctly.... \n");
printf("Displaying out all the strings: \n");
for(i=0;i<n;i++){
printf("%s\n",&arr[i]);
}
}
void testStringInputs()
{
printf("Enter the number of entries : ");
int n;
scanf("%d",&n);
char* strings[n];
readInStrings(strings,n);
}
Образец ввода:
Введите количество записей: 3
Введите другую строку: Алладин
Введите другую строку: Барак Обама
Введите другую строку: строки прочитаны правильно ....
Отображение всех строк:
AllaBaraObama
BaraObama
Обама
Проблемы:
1) Почему одна строка вообще не принимается в качестве входных данных?
2) Почему отображаемые строки шифруются так?
Проблема та же, если я использую get () или fgets () вместо scanf ().