Анжела, вы в основном допустили 3 ошибок в своем коде.
Сначала должен иметь массив из 10 элементов int number[10];
, а не int *number[10];
.Здесь вам нужен только одномерный массив.int *number[10];
Используется для двумерного массива.
Секунда Вы не можете использовать указатель строки без выделения памяти для этого. Поэтому код выделения с использованием malloc street[i] = (char *)malloc(sizeof(char) * 100);
должениспользовать перед чтением некоторых значений в street[i]
.
В-третьих, при сканировании целочисленного массива в c вы должны использовать оператор &
. Так что оператор scanf
должен быть scanf("%s%d", street[i], &number[i]);
Пожалуйста, попробуйте этот измененный код. Это будет работать: -
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *street[10];
int number[10]; // not *number[10]
int i;
for (i = 0; i < 10; i++)
{
printf("Enter street and number: \n");
street[i] = (char *)malloc(sizeof(char) * 100); // assuming the max-string size is 100
scanf("%s%d", street[i], &number[i]); // not number[i]
getchar(); // for handling un managed '\n' (enter-keys)
}
for (int i = 0; i < 10; i++)
{
printf("%s\n", street[i]);
}
}