Cómo leer la segunda y última palabra de cada línea en C

Tengo un archivo con datos como este.

{0 / Data1 /, 0x00, 0, 0xFF},

{1 / data2 /, 0x00, 0, 0xFF},

{2 / data3 /, 0x00, 0, 0xFF},

{3 / data4 /, 0x00, 0, 0xFF}, …

Quiero imprimir solo la segunda y última columna de cada línea. A continuación se muestra el código que trabajé. Está imprimiendo toda la línea. Cómo editar para imprimir solo la segunda y última columna de cada línea.

#include #include int main () { char filename[] = "file.txt"; FILE *file = fopen(filename, "r"); if(file!= NULL) { char line[128]; while ( fgets( line, sizeof line, file)!= NULL) { fputs ( line,stdout); } fclose(file); } else { perror(filename); } getch(); return 0; } 

¡Por favor ayuda!

¡Gracias una tonelada!

sscanf () debería hacer el truco.

Utiliza una cadena de formato como printf (), luego lee los valores en variables.

 #include  #include  int main() { unsigned int a, c, d, e; char b[101] = ""; char filename[] = "file.txt"; FILE *file = fopen(filename, "r"); if (file != NULL) { char line[128]; while (fgets(line, sizeof line, file) != NULL) { sscanf(line, "{%d %100s , %x, %d, %x}", &a, b, &c, &d, &e); printf("%d %X\n", d, e); } fclose(file); } else { perror(filename); } return 0; } 

Si sus datos están formateados de esta manera: {0 / Data1 /, 0x00, 0, 0xFF} u puede buscar el corchete al final de la línea de datos.

Ejemplo (no la resolución completa)

 char data[] = "{0 /Data1/ , 0x00, 0, 0xFF}," //find the back bracket position int i=0; while( i < strlen(data) && data[i]!='}') i++; if(i 

Cuando encuentre la posición de rebobinado del corchete para el tamaño de palabra (si no es la búsqueda estándar para el espacio en blanco) y lea el valor entre estas dos posiciones (posición del espacio en blanco y posición del corchete)