Проблема с доступом к файлу

Вы можете использовать оператор &. Вот исходный код:

#include<stdio.h>
#include<stdlib.h>
int main(){

    int a[10];

    int *p; 

    printf("%p\n", (void *)a); 
    printf("%p\n", (void *)(&a+1));
    printf("---- diff----\n");
    printf("%zu\n", sizeof(a[0]));
    printf("The size of array a is %zu\n", ((char *)(&a+1)-(char *)a)/(sizeof(a[0])));


    return 0;
};

Вот пример вывода

1549216672
1549216712
---- diff----
4
The size of array a is 10
1
задан user278618 13 May 2010 в 16:37
поделиться

4 ответа

Неразумно использовать относительное имя пути для файла. Рабочая директория вашей программы может измениться, и тогда файл не будет найден. Создайте абсолютное имя пути к файлу следующим образом:

    public static string GetAbsolutePath(string filename) {
        string dir = System.IO.Path.GetDirectoryName(Application.StartupPath);
        return System.IO.Path.Combine(dir, filename);
    }

Использование:

         string[] lines= File.ReadLines(GetAbsolutePath(@"mylibrary\airports.txt"));
1
ответ дан 3 September 2019 в 00:33
поделиться

Чтобы System.Environment.CurrentDirectory работал, вам нужно иметь "airports.txt" файл в директории bin\release или bin\debug (в зависимости от того, какой у вас buid) при запуске из VS.

Два варианта, использующие расположение сборки, не будут работать, потому что расположение включает имя сборки, поэтому оно содержит не только путь.

1
ответ дан 3 September 2019 в 00:33
поделиться

Означает ли это, что в MyLibrary есть файл под названием airports.txt?

Если да, то вам нужно убедиться, что этот файл включен в вывод сборки. Щелкните правой кнопкой мыши на файле в Visual Studio и выберите Properties. В окне Properties есть свойство Copy to Output Directory, которое можно установить в Copy Always, и у вас больше не будет проблем.

0
ответ дан 3 September 2019 в 00:33
поделиться

Каждый из приведенных вами способов предполагает, что файл "airports.txt" находится в той же папке, что и ваш исполняемый файл. Обратите внимание, что по умолчанию в Visual Studio отладочная версия вашего исполняемого файла (которая используется при отладке) находится в bin\Debug, а релизная версия, которую вы предоставите своим пользователям, находится в bin\Release.

0
ответ дан 3 September 2019 в 00:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: