Код (Text): void ins_str(char vo_chto[], char chto[], int num){ auto int i, lenChto = lenght(chto); char gde_1[num]; for (i = 0; i < num; i++){ gde_1[i] = vo_chto[i]; } gde_1[i] = '\0'; printf("%s", gde_1); } почему срока char gde_1[num]; не работает?
smails Си не умеет "на лету" работать с динамическими структурами. Пропиши там не num, а фиксированный размер.
Но нум это и есть фиксированная цифра, передаваемая в функцию.. или всёравно нужно писать число?.. а если строка очень большая и нехватит размера массива? или она очень маленькая и тогда её не нужно резервировать много места?..
Ну что?.. остаётся мне только число подставить?.. Ну ладно, если что потом препод исправит... Но балл ниже будет = )
1. В С нет new 2. А как с помощью new можно выделить конкретный размер памяти в зависимости от значения переменной? Очень странная книга PS. Может быть сейчас уже другой С?
Незнаю каким был С, но в книге "Программирование на С" автора Стефан Кочан именно так написано... Глава 7 Массивы, листинг 7.8 Код (Text): // Генерация чисел фибоначчи с помощью массивов с переменным размером #include <stdio.h> int main (void){ int i, numFibs; printf("How many? "); scanf("%i", &numFibs); if (numFibs < 1 || numFibs > 75){ printf("Bad number, sorry!\n"); return 1; } unsigned long long int Fibonacci[numFibs]; Fibonacci[0] = 0; Fibonacci[1] = 1; for (i = 2; i < numFibs; ++i) Fibonacci[i] = Fibonacci[i - 2] + Fibonacci[i - 1]; for (i = 2; i < numFibs; ++i) printf("%llu ", Fibonacci[i]); printf("\n"); return 0; } Полный код программы... Кстати которая не работает... Какие нибудь есть предположения на счёт этого?..
Код (Text): #include <stdio.h> #include <malloc.h> int main(int argc,char *argv[]) { unsigned short int num; unsigned short int i; unsigned int *fib; printf("How many? "); scanf("%i", &num); if (num < 1 || num > 75) { printf("Bad number, sorry!\n"); return 1; } fib = malloc(sizeof(int)*num); fib[0] = 0; fib[1] = 1; for (i = 2; i < num; i++) fib[i] = fib[i-2] + fib[i-1]; for (i = 0; i < num; ++i) printf("%u ", fib[i]); puts(""); free(fib); return 0; }
Код (Text): void main(void) { int size; char *pointer; cout << "Введите размер массива, до 30000: "; cin >> size; if (size <= 30000) { pointer = new char[size]; if (pointer != NULL) cout << "Память выделена успешно" << endl; else cout << "Невозможно выделить память" << endl; } }
С++ не знаю совсем: все время думал, что с помощью new можно только экземпляры объектов создавать. Luge Но тема изначально было про С, а не С++ Я не знаю, почему их все время путают: абсолютно разные языки, разве что семантика похожа
Эмм.. мы ещё не проходили такие способы... и врядли примут такую работу.. Так значит код, который я написал из книги - бред?