Extraer entero del búfer char

Tengo un problema muy simple en C. Estoy leyendo un archivo en línea y lo guardo en un búfer

char line[80]; 

Cada línea tiene la siguiente estructura:

 Timings results : 2215543 Timings results : 22155431 Timings results : 221554332 Timings results : 2215543 

Lo que estoy tratando de hacer es extraer el valor entero de esta línea. ¿Proporciona C aquí alguna función simple que me permita hacer eso?

Gracias

Puede usar sscanf por línea, como:

 #include  int time = -1; char* str = "Timings results : 120012"; int n = sscanf(str, "Timings results : %d", &time); 

en este caso n == 1 significa éxito

Si – prueba atoi

  int n=atoi(str); 

En su ejemplo, tiene un prefijo fijo antes del entero, por lo que simplemente podría agregar un desplazamiento a szLine antes de pasarlo a atoi, por ejemplo

  int offset=strlen("Timings results : "); int timing=atoi(szLine + offset); 

Bastante eficiente, pero no soporta bien las líneas que no son las esperadas. Sin embargo, puedes revisar cada línea primero:

  const char * prefix="Timings results : "; int offset=strlen(prefix); char * start=strstr(szLine, prefix); if (start) { int timing=atoi(start+offset); //do whatever you need to do } else { //line didn't match } 

También puede usar sscanf para analizar líneas como esta, lo que hace que el código sea más conciso:

  int timing; sscanf(szLine, "Timings results : %d", &timing); 

Finalmente, vea también Parsing Integer to String C para obtener más ideas.