#c #file-io
#c #file-io
Вопрос:
Прежде всего, это мой первый вопрос о переполнении стека, поэтому простите меня, если я неправильно отформатирую это.
Я новичок в C, и я дошел до точки в своей книге о файловом вводе / выводе. Следующий код, который должен печатать строки для test.txt , не создает новый текстовый файл или… делайте что угодно.
Я запускаю блоки кода 16.01 в Windows. Предназначен ли этот код для другой ОС?
#include <stdio.h>
#include <stdlib.h>
main() {
FILE *fp;
fp = fopen("/tmp/test.txt", "w ");
fprintf(fp, "This is testing for fprintf...n");
fputs("This is testing for fputs...n", fp);
fclose(fp);
}
Хорошо, поэтому удаление косой черты заставляет его работать. В исходном коде это ‘fopen(«/tmp/test.txt «, «W «);’
Разве это не должно создавать файл в папке tmp?
Комментарии:
1.
main()
—>int main (void)
… Кстати, в чем проблема?2. Он не создает test.txt
3. Где вы ожидаете, что файл будет создан?
4. Windows не использует прямые косые черты между компонентами пути.
5. @user7005993: вы, вероятно, хотите что-то вроде:
fp = fopen("test.txt", "w ");
создать файл в вашем текущем рабочем каталоге.
Ответ №1:
Попробуйте удалить косую черту из имени файла. Кажется, вы все делаете правильно, проблема может быть в косой черте. Если нет, сообщите нам об этом.
Редактировать: когда я писал свой комментарий, ваш fopen использовал «/test.txt » и не » /temp/test.txt «, есть ли у вас папка «temp», созданная в каталоге, из которого запущено приложение? Если нет, попробуйте создать его. Или удалите его полностью и попробуйте создать текстовый файл в каталоге, из которого запущено приложение.
Ответ №2:
Используйте double //
в Windows для навигации по каталогу.
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp;
/*
file path in windows should be like this= C:\users\r.maurya\Desktop\Downloads\file.txt
*/
fp = fopen("C:\users\r.maurya\Desktop\Downloads\file.txt", "w ");
fprintf(fp, "This is testing for fprintf...n");
fputs("This is testing for fputs...n", fp);
fclose(fp);
return 0;//Optional, On success of program
}
Комментарии:
1. Обратите внимание, что экранированная обратная косая черта не нужна — вы можете просто использовать стандарт
/
, который интерпретируется таким же образом в Windows и является несколько более переносимым.2. Я предлагаю вам попробовать — это действительно работает с Windows path.
3. @PaulR да, конечно 🙂