while(1){
//Command prompt
char *command;
printf("%s>",current_working_directory);
scanf("%s",command);<--seg faults after input has been received.
printf("\ncommand:%s\n",command);
}
Я получаю несколько разных ошибок, и они не кажутся воспроизводимыми (за исключением segfault на данный момент). Этот код работал нормально около 10 минут назад, затем он бесконечно зацикливал команду printf, и теперь он вызывает ошибки в строке, упомянутой выше. Единственное, что я изменил, было scanf(">%s",command);
на то, что есть на данный момент. Если я изменю переменную команды на массив, она будет работать; очевидно, это потому, что для него выделено хранилище.
- Меня привлекли к ответственности за то, что я сказал кому-то, что ему нужно malloc указатель * (но обычно это решает проблему, такую как создание массива)
- Я ввожу команду "magic" - 5 символов, так что не должно быть никакого сумасшедшего переполнения стека.
- Я работаю на Mac OS X 10.6 с новейшей версией xCode (не OS4) и стандартным gcc
- Вот как я собираю программу:
gcc --std=c99 -W sfs.c
Просто пытаюсь понять, что происходит. Так как это для школьного проекта, который я никогда больше не увижу, я просто напишу какую-нибудь работу по noob, которая заставит моего босса плакать :) Но потом я бы хотел выяснить почему это происходит, а не просто исправить это, и если есть какое-то исправление, почему это исправление.