Argc ve argv kullanarak dosyanın adını komut satırından alması gereken bir programım var. Print argv [1] ve argv [2] bana tam olarak geçtiğim isimleri gösterir, ancak argv [1] ve argv [2] parametrelerini başka bir fonksiyonda açmak için parametreler olarak geçersem sadece açamadığım hata satırını gösteririm dosya.
Benim ana:Argv ile dosyaları açın bana dosya veriyor NULL
int main(int argc, char* argv[])
{
if (argc != 4)
{
puts("Incorrect number of parameters.");
return 1;
}
else
{
Image *a, *b;
a = OpenFile(argv[1]);
b = OenFile(argv[2]);
} /* else */
return 0;
} /* main */
fonksiyon OpenFile dosyadan bilgi dolu bir yapı dönecektir. İşte işlevinin ilk parçası: "açılırken hata dosyası"
Image *OpenFile(char* name)
{
FILE* f = fopen(name, "r");
Image* imagem;
int temp, i, cont, data[MAX];
char aux[2];
if(f == NULL)
{
puts("Error opening file.");
return NULL;
} /* if */
...
}
Doğru isimler geçiyorum ama almak Açmaya çalıştığım her dosya için satır.
Düzenleme: Bana "Böyle bir dosya veya dizin yok" veriyor, ancak dosyaları .exe'nin bulunduğu dizine kopyaladım. Dosyanın adını komut satırından ilk defa kullanmıyorum, fakat ilk defa başka bir işleve parametre olarak geçiyorum. fopen adam sayfasından
perror kullanmak için errno.h içermelidir, mantıksal bir sonuçtur dosyayı açmaya çalışırken program bir hatayla karşılaştı gibi görünüyor. –
Lütfen programa aktardığınız dosyaların isimlerini belirtin. Kodları nasıl derlediğinizi ve yürütülebilir işlemin oluşturulduktan sonra nereye yerleştirildiğini bilmiyoruz. Belki de çıkış dizininiz okumaya çalıştığınız dosyaları içermiyordur. – Kamil
Doğal olarak, tamamen kesin, mutlak dosya belirtimi tamamen belirsiz geçiyorsunuz? –