Динамический Строковый Вход - использующий scanf (“%as”)

Я пытаюсь считать входное использование scanf и хранение в char * динамично, как указано руководством GCC, Но это дает ошибку времени компиляции.

  char *string;
  if (scanf ("%as",&string) != 1){
    //some code
  }
  else{
   printf("%s\n", *string);
   free(string);
   //some code
  }

9
задан Spikatrix 19 February 2016 в 21:25
поделиться

4 ответа

Модификатор a к scanf не будет работать, если вы компилируете с флагом -std=c99; убедитесь, что вы его не используете.

Если у вас есть хотя бы версия 2.7 glibc, вы можете и должны использовать модификатор m вместо a.

Кроме того, вы несете ответственность за освобождение буфера.

11
ответ дан 3 November 2019 в 00:00
поделиться

Включены ли у вас расширения GNU? Стандартный C вообще не имеет модификатора a.

1
ответ дан 3 November 2019 в 00:00
поделиться

"Динамический ввод строк" с scanf("%as") будет работать, если включен флаг -ansi или -std=c89.
Компилируйте с помощью gcc -ansi

Или же вы можете использовать scanf("%ms")

0
ответ дан 3 November 2019 в 00:00
поделиться

У меня был ограниченный опыт работы с GCC, но я никогда не видел модификатора % a для scanf ]. Вы пытались заменить % a на % s в третьей строке, которую вы указали?

0
ответ дан 3 November 2019 в 00:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: