Soy nuevo en C, y estoy tratando de escanear una línea de stdin y extraer la enésima palabra de ella. Ahora he modificable donde pueda almacenar la primera, segunda o tercera entrada, en la oración, y esto es lo que parece:sscanf: obtener la enésima palabra en una oración
int set_to_nth_word(char* word, char* input, int n)
{
char word1[20];
char word2[20];
char word3[20];
if(sscanf(input, "%s %s %s", word1, word2, word3) < n)
{
printf("You didn't enter enough values\n");
return 0;
}
else
{
if(n == 1) strcpy(word, word1);
else if(n == 2) strcpy(word, word2);
else if(n == 3) strcpy(word, word3);
return 1;
}
}
El código que llama a este método es:
char *input = (char *) malloc (1);
if(getline(&input, (size_t)0, stdin) != -1)
{
char word[20];
if(set_to_nth_word(word, input, 1))
{
printf("Success");
}
}
Además de encontrar una solución a este problema, me alegra que alguien señale un mal estilo o malas prácticas de codificación.
Tenga en cuenta que getline() aquí hay una función de GNU y no es en todas las plataformas POSIX. (Mac OS X no lo tiene, por ejemplo.) – chrisaycock