Я не знаю, что происходит, но каждый раз, когда я открываю файл с fopen, он возвращает NULL , но если я попытаюсь напечатать адрес, то он напечатает действительный адрес Если я попытаюсь прочитать запись в другой файл ничего не случилось, я открываю его в режиме «w», и я открыл все разрешения для всех пользователей.C: fopen() всегда возвращает NULL
ответ
Использование \\ вместо // в ваших имен путей. Символ слэш (/) не нужно записывать дважды, когда внутри строки C. С другой стороны, символ обратной косой черты (\) должен быть дважды написан, если используется внутри строки C, чтобы не путать с escape-символом.
Я не уверен, но я думаю, что Windows также принимает/как разделитель каталогов для имен файлов.
все еще не работает, http://i39.tinypic.com/2r2tzip.png – user2927785
errno возвращает «без ошибок». fopen() не возвращает NULL, поэтому ... что не работает? –
BTW: это не лучший способ скопировать двоичный файл на другой. Что, если код символа EOF присутствует где-нибудь в исходном файле? Лучше использовать 'fread()' и 'fwrite()' –
Вы путаете синтаксис - любой из них должен работать:
fp = fopen("D:\\shortcut\\asd.jpg", "r");
или
fp = fopen("D:/shortcut/asd.jpg", "r");
Там же несколько ошибок.
fetc() возвращает Int, а не обугленный, назначая fgetc() возвращаемое значение к полукоксу сделает невозможным отличить EOF от действительного байта в файле.
Вы открываете двоичные файлы, поэтому вам нужно сообщить fopen(), что по умолчанию открывать файлы в текстовом режиме.
//
не является разделителем каталогов на окнах,\
или/
является. Поскольку\
нуждается в экранировании, когда в строковом литерале C должно быть указано\\
Необходимо проверить, успешно ли fopen, и выдавать соответствующую ошибку, если она не работает.
Необходимо отправить код, а не снимок экрана с кодом.
Do:
FILE *fp, *dest;
int c;
if ((fp = fopen("D:\\shortcut\\asd.jpg", "rb")) == NULL) {
perror("fp fopen");
return 1;
}
if ((dest = fopen("D:\\sssssssssssss.jpg", "wb")) == NULL) {
perror("dest fopen");
return 1;
}
while ((c = fgetc(fp)) != EOF) {
putc(c, dest); //might even want to check if putc fails.
}
fclose(dest);
fclose(fp);
return 0;
- 1. PHP fopen() возвращает NULL, всегда
- 2. Почему «fopen» возвращает указатель NULL?
- 3. fopen() всегда возвращает NULL, когда я пытаюсь прочитать txt-файл
- 4. Character.forDigit всегда возвращает null
- 5. Datatable.GetChanges() всегда возвращает null
- 6. optarg всегда возвращает null
- 7. strstr всегда возвращает null
- 8. AnonymousID всегда возвращает null
- 9. WURFLManager всегда возвращает null
- 10. PQgetResult всегда возвращает NULL
- 11. Читатель всегда возвращает NULL
- 12. ExecuteScalar() всегда возвращает NULL
- 13. Сессия всегда возвращает null
- 14. UserManager.FindAsync всегда возвращает null
- 15. GetAssetPreview всегда возвращает null
- 16. getLastNonConfigurationInstance всегда возвращает null
- 17. getStringArrayExtra() всегда возвращает null
- 18. Excel.Range.Find всегда возвращает null
- 19. myParser.getText всегда возвращает null
- 20. newSpellCheckerSession всегда возвращает null
- 21. CurrentApp.LicenseInformation.ProductLicenses() всегда возвращает null
- 22. Getter всегда возвращает NULL
- 23. GetTemplateChild всегда возвращает null
- 24. BodyFrameReader.AcquireLatestFrame всегда возвращает null
- 25. HttpPostedFileBase всегда возвращает null
- 26. $ .getJSON всегда возвращает null
- 27. geLocations() всегда возвращает null
- 28. LocationServices.FusedLocationApi.getLastLocationLocationLocation всегда возвращает null
- 29. device_data.get() всегда возвращает Null
- 30. Функция всегда возвращает null?
Где вы видите, что 'fopen' возвращается нуль ??? Ничто в том, что вы опубликовали, указывает, что 'fp' или' dest' равно null. Откуда у вас эта идея? Хотя неверно использовать спецификатор '% d' для указателей' printf' (почему вы его использовали?), Ваш вывод ясно показывает, что указатели * не являются нулевыми *. – AnT