Стандартная функция fgets
может добавить символ новой строки '\n'
к введенной строке при условии, что в соответствующем массиве символов достаточно места.
Поэтому используйте
char *f = strtok(NULL, " \n");
вместо
char *f = strtok(NULL, " ");
Из стандарта C (7.21.7.2 Функция fgets)
2 Функция fgets считывает самое большее на один символ меньше, чем число символов, указанное в nиз потока, на который указывает поток, в массив, на который указывает s. Никакие дополнительные символы не читаются после символа новой строки (который сохраняется) или после конца файла. Нулевой символ записывается сразу после того, как последний символ прочитан в массив.
Другой метод заключается в первоначальном удалении символа из введенной строки, например,
#include <string.h>
#include <stdio.h>
//...
fgets(cmd, BUFFLIM, stdin);
cmd[ strcspn( cmd, "\n" ) ] = '\0';
Что касаетсяваш фрагмент кода, кажется, у вас есть следующий результат, как показано в демонстрационной программе.
#include <stdio.h>
#include <string.h>
int main(void)
{
char s[100];
fgets( s, sizeof( s ), stdin );
char *cmd = strtok( s, " " );
char *f = strtok( NULL, " " );
printf( "cmd:\"%s\"\nf:\"%s\"", cmd, f );
return 0;
}
Вывод программы:
cmd:"minimount"
f:"imagefile.img
"