Мне нужно создать программу, которая:
- изначально выделяет массив для чтения и поддерживает до 5 температур.
- предлагает пользователю ввести температуры и ввести значение -100.0 после их завершения
- , если пользователь заполняет массив, ваша программа должна динамически выделить новый массив, размер которого в два раза больше.
- скопировать старые значения в новый массив.освободить старый массив.
- продолжить чтение в новый массив.
- распечатать новый массив, когда он будет готов
Я совершенно новичок вС и я вроде застрял.Я знаю, как создать динамический массив, но я не знаю, как создать новый массив, который постоянно увеличивается после заполнения старого массива.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
int i,k; //loop count
int j = 5; //initial array size
int* temp = malloc(sizeof(int)*j);
int* newtemp;
for (i = 0; i < j; i++){ //loop to read in temperature
printf("enter temperature: ");
scanf("%d",(temp+i));
if (i=j){
j = j*2; //double the size of initial array
int* newtemp = malloc(sizeof(int)*j);
strcpy(*newtemp,temp); // copy string
for (k = 0; k < j; k++){ //loop to read in temperature
printf("enter temperature: ");
scanf("%d",(temp+i+k));
}
}
switch (temp[i]){
case (-100):
temp[i] = '\0';
i = 5; //loop ends
break;
}
}
return 0;
}
Сообщения об ошибках:
tempp.c:18:16: warning: passing argument 1 of ‘strcpy’ makes pointer from integer without a cast [-Wint-conversion]
strcpy(*newtemp,temp);
^
In file included from tempp.c:3:0:
/usr/include/string.h:121:14: note: expected ‘char * restrict’ but argument is of type ‘int’
extern char *strcpy (char *__restrict __dest, const char *__restrict __src)
^~~~~~
tempp.c:18:25: warning: passing argument 2 of ‘strcpy’ from incompatible pointer type [-Wincompatible-pointer-types]
strcpy(*newtemp,temp);
^~~~
In file included from tempp.c:3:0:
/usr/include/string.h:121:14: note: expected ‘const char * restrict’ but argument is of type ‘int *’
extern char *strcpy (char *__restrict __dest, const char *__restrict __src)
Я знаю, что мой код грязный, и я действительно не знаю правильного метода перераспределения нового массива, пока он постоянно растет.Пожалуйста, помогите мне с этим.Спасибо!