Я пытаюсь считать входное использование scanf
и хранение в char *
динамично, как указано руководством GCC, Но это дает ошибку времени компиляции.
char *string;
if (scanf ("%as",&string) != 1){
//some code
}
else{
printf("%s\n", *string);
free(string);
//some code
}
Модификатор a
к scanf не будет работать, если вы компилируете с флагом -std=c99
; убедитесь, что вы его не используете.
Если у вас есть хотя бы версия 2.7 glibc, вы можете и должны использовать модификатор m
вместо a
.
Кроме того, вы несете ответственность за освобождение буфера.
Включены ли у вас расширения GNU? Стандартный C вообще не имеет модификатора a
.
"Динамический ввод строк" с scanf("%as")
будет работать, если включен флаг -ansi
или -std=c89
.
Компилируйте с помощью gcc -ansi
Или же вы можете использовать scanf("%ms")
У меня был ограниченный опыт работы с GCC, но я никогда не видел модификатора % a
для scanf
]. Вы пытались заменить % a
на % s
в третьей строке, которую вы указали?