Когда я пытаюсь запустить код, он запрашивает первый ввод, но затем он показывает ядро сбрасывания.Ядро сбрасывается при запуске программы
И у меня есть некоторые сомнения, как я могу исправить это предупреждение fgets?
И пожалуйста, если этот код может быть оптимизирован, пожалуйста, скажите мне, I`m пытается сделать эффективный код: D
Compile с этим:
г ++ -O2 -Wall Proy2.cpp -o Proy2
Код:
#include <cstdio>
#include <iostream>
using namespace std;
int main(){
typedef struct PC{
char Brand[20];
char Model[20];
char Serial[20];
char Processor[10];
};
PC PC1[5],*machine;
unsigned int i;
for(i = 0; i < 4; i++){
cout <<"Insert PC brand: ";
fgets(machine->Brand, 20, stdin); fflush(stdin);
cout <<"Insert PC model: ";
fgets(machine->Model, 20, stdin); fflush(stdin);
cout <<"Insert PC serial: ";
fgets(machine->Serial, 20, stdin); fflush(stdin);
cout <<"Insert PC processor: ";
fgets(machine->Processor, 10, stdin); fflush(stdin);
printf("PC Brand : %s", PC1[i].Brand);
printf("PC Model : %s", PC1[i].Model);
printf("PC Serial : %s", PC1[i].Serial);
printf("PC Processor: %s", PC1[i].Processor);
PC1[i] = *machine;
}
return 0;
}
Ваша переменная 'machine' никогда не инициализируется, если это исправляет ее, скажите, чтобы я сделал полноценный ответ :) – saloomi2012
« Ядро свалило попытку скомпилировать »- вы, кажется, говорите, что компилятор * разбился? Это необычно (но не неслыханно). – immibis
Пожалуйста, решите, собираетесь ли вы использовать C или C++; 'fgets' должен быть' getline', а 'fflush (stdin):' является незаконным. И, конечно, вам нужно «machine = new PC», чтобы исправить вашу ближайшую проблему. –