Посмотрите на эти строки:
char * str = NULL; // str is a pointer equal NULL
int ret;
while(iterations > 0)
{
do{
printf("Enter a value: ");
scanf("%s", str); // Here you read data into str which is NULL
// That will cause a program crash
Убедитесь, что str
указывает на некоторую выделенную память, прежде чем вводить в нее данные.
Возможно, вы могли бы сделать:
do{
str = malloc(MAX_SIZE_OF_INPUT); // Allocate memory for the string
if (str == NULL)
{
// Out of memory
exit(1);
}
printf("Enter a value: ");
И еще одна деталь:
}while( (strcmp(str, "EOF")) == 0);
Я думаю, вы хотите
}while( (strcmp(str, "EOF")) != 0);
Кстати: никогда не делайте:
scanf("%s", str);
, поскольку это может переполнить любой буферна что указывает str
Всегда устанавливайте ограничение на количество символов для чтения.Нравится
scanf("%100s", str); // Maximum is 100