У меня странная проблема с функцией realpath
. Функция работает, когда ей передается строка, полученная в качестве аргумента для программы, но происходит сбой, когда передается строка, которую я определяю в исходном коде. Вот простая программа:
#include <stdlib.h>
#include <limits.h>
#include <stdio.h>
int main(int argc, const char* argv[])
{
char* fullpath = (char*)malloc(PATH_MAX);
if(realpath(argv[1], fullpath) == NULL)
{
printf("Failed\n");
}
else
{
printf("%s\n", fullpath);
}
}
Когда я запускаю это с аргументом ~/Desktop/file
(file
существует и является обычным файлом), я получаю ожидаемый результат
/home/<username>/Desktop/file
Вот еще одна версия программы:
#include <stdlib.h>
#include <limits.h>
#include <stdio.h>
int main(int argc, const char* argv[])
{
const char* path = "~/Desktop/file";
char* fullpath = (char*)malloc(PATH_MAX);
if(realpath(path, fullpath) == NULL)
{
printf("Failed\n");
}
else
{
printf("%s\n", fullpath);
}
}
Когда я запускаю эту программу, я получаю вывод
Failed
Почему второй не работает?
fullpath
динамически? Почему не массив? - person Some programmer dude   schedule 01.06.2017argv[1]
, чтобы узнать, что это такое? И проверятьerrno
при сбое вызова? Я также предлагаю вам прочитать страницу руководстваrealpath
. - person Some programmer dude   schedule 01.06.2017