EDITED: Я в строго-C-среде. Любые коды C++ не будут работать. Я в среде, где я не могу отлаживать. Я просто смог скомпилировать и удалить программу всех ошибок. Извините, если я кажусь строгим, я просто работаю в такой среде. Любая помощь ценится!Ошибка при передаче указателя строки на fopen
У меня есть файл с именем namefi.txt, который имеет всю строку имен файлов после строки. Каждая строка имеет только одно имя файла, поэтому я использую strtok для удаления всех пробелов и просто беру имя файла, которое я передаю в FOPEN. Но просто кажется, что f-open не принимает его. Он создает файл output.txt и даже переименовывает его в нужное имя (хотя до имени name_ne.txt - не уверен, почему «w» отсутствует, «имя» имеет длину всего четыре символа, но все равно), но когда я откройте файл, все, что я вижу, это «Ошибка открытия файла Naren.txt». Если я прокомментирую часть namefi программы и часть переименования, она выписывает из входного файла выходной файл. Дело в том, что часть, где требуется имя файла из namefi.txt и его открытие, не происходит. Любая помощь вообще была бы оценена. Вот мой код.
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void main()
{
FILE *inpfi, *outfi, *namefi,newna;
char buf[132], name[132], *trim;
namefi = fopen("Namefi.txt", "r");
while(frets(name, 132, namefi)!=NULL)
{
trim = strtok(name," ");
inpfi = fopen(trim, "r");
outfi = fopen("OUTPUT.txt", "w");
if(!inpfi)
fprintf(outfi, "File open error: %s", trim);
while(fgets(but,132,inpfi)!=NULL)
fprint(outfi, "%s", buf);
newna = strtok(trim, ".");
newna = strcat(newna,"_new.txt");
rename("OUTPUT.TXT", newna);
fclose(inpfi);
fclose(outfi);
}
}
Скомпилируйте все предупреждения и информацию об отладке (возможно, с помощью 'gcc -Wall -g'). ** Используйте отладчик ** (например, 'gdb'). Проверьте все ваши вызовы на libc-функции (например, 'fopen'). Используйте «perror» для отображения кода ошибки. Расскажите нам о своем компиляторе, операционной системе, файловой системе ....И «лады», вероятно, должны быть «fgets»; также, пожалуйста, отпечатайте свой код, чтобы сделать его более читаемым. –
@BasileStarynkevitch Спасибо за ваш комментарий. Я отредактировал вопрос. И про отступ, я дал ctrl + k. Не уверен, почему он не работает. :(Извините. –
Просто введите соответствующее количество пробелов в код отступа. В системе Linux вы также можете использовать: 'indent source.c', затем' sed 's/^//' source.c' -there четыре пробела между вторым и третьим '/' - и копировать-вставить вывод этой команды 'sed' .... –