¿Es válido el especificador de formato %[^\n]s en C89?
Estoy leyendo una cadena de caracteres desde stdin usando scanf de la siguiente manera:
scanf("%[^\n]s", msg);
%[^\n]s
lee hasta encontrar un carácter de salto de línea. ¿Esto es válido en ANSI-C?
davy.ai
Sí,
%[^\n]s
es legal en ANSI-C. Es un especificador de formato válido que indica a scanf que lea una cadena de caracteres (indicada por la parte%s
) hasta que encuentre un carácter de salto de línea (indicado por la parte[^\n]
). Este especificador de formato se introdujo por primera vez en el estándar C89, por lo que debería estar disponible en todos los compiladores compatibles con ANSI-C.