Leer entrada de forma segura en C
scanf corta: revisa su valor de retorno y nunca dejes un %s sin límite.
#include <stdio.h>
void read_pair(void) {
int count = 0;
double rate = 0.0;
printf("count and rate: ");
if (scanf("%d %lf", &count, &rate) != 2) {
printf("could not read both values\n");
return;
}
char name[10];
if (scanf("%9s", name) == 1) {
printf("%s: %d at %.1f\n", name, count, rate);
}
}
Cómo funciona
- Devuelve cuántos elementos asignó con éxito.
%9sacota la escritura a un búfer de diez bytes.- El código real casi siempre lee una línea con fgets y la parsea.
Palabras clave y builtins usados aquí
chardoubleifintreturnvoid
El intento, en números
- Líneas
- 17
- Caracteres a escribir
- 296
- Tokens
- 93
- Ritmo de tres estrellas
- 90 tpm
Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 62 segundos.
Paso 2 de 2 en Entrada y salida; paso 32 de 35 en Fundamentos del lenguaje.