Вы не предоставили достаточно информации здесь, но кажется очевидным, что проблема, скорее всего, в содержимом argv[1]
.На что указывает указатель в argv[1]
?Не думайте, используйте ваш отладчик и посмотрите на него.Бьюсь об заклад, это не то, что вы думаете.
Вы также не учитываете тот факт, что ваша программа, возможно, не была запущена с какими-либо аргументами, а это означает, что argv[1]
читает после конца буфера.Это тангенциально.
РЕДАКТИРОВАТЬ:
Для вашего комментария, вы должны указать полный путь к файлу fopen
.Он должен работать, если файл находится в вашем рабочем каталоге, но в зависимости от вашего environemnt (VS один), который может быть не так просто, как кажется.
Я провел тест с файлом foo.txt
в моем\ project \ debug каталог, тот же каталог, что и мой исполняемый файл.Не удалось открыть файл с относительным путем, но удалось указать полный путь.
Однако, если я просто дважды щелкнул исполняемый файл в этом каталоге, он работал.Очевидно, VS делает что-то за кулисами, что меняет рабочий каталог.
Чтобы использовать относительные пути, щелкните правой кнопкой мыши проект -> Свойства -> Отладка -> Рабочий каталог.Установите это в свою выходную папку, и все будет в порядке.
#include <stdlib.h>
#include <stdio.h>
#include <Windows.h>
int main() {
FILE *file;
if(!(file = fopen("foo.txt", "r"))) {
printf("no worky");
}
}