Найдите абсолютный путь в linux с помощью strchr

#c #linux #path #strchr

Вопрос:

Как мы можем использовать функцию strchr для поиска абсолютного пути в Linux, например:

 Input: /home/test/sample
Output: /home/test
 

Я пытаюсь написать что-то вроде этого:

 int main() {
char* string = "/home/test/sample";
char* pos;
pos = strchr(string, '/');
printf("%sn", pos);
return 0;
}
 

Но это не работает, я получил тот же вывод, что и на входе:

 Input: /home/test/sample
Output: /home/test/sample
 

Комментарии:

1. Цитата со страницы руководства: Функция strchr() возвращает указатель на первое вхождение символа c в строке s. Это первое вхождение является самым левым, то есть первым символом.

2. Вы используете неправильную терминологию. Технически то, что вы ищете, — это префикс имени пути.

3. Из примера кода видно, что на самом деле вам не нужен абсолютный путь. Если вам действительно нужен абсолютный путь, попробуйте realpath

Ответ №1:

Вместо этого используйте функцию dirname:

 #include <libgen.h>
#include <stdio.h>
#include <string.h>

int main()
{
  char* string = strdup ("/home/test/sample");
  char* pos;
  pos = dirname (string);
  printf ("%sn", pos);
  return 0;
}
 

Для поиска наиболее подходящего вхождения используйте функцию strrchr.