С вашей программой существует несколько проблем.
Первый, getc()
int
, а не char
. Это необходимо для того, чтобы он мог удерживать EOF
, так как это недопустимое значение char
. Поэтому вам нужно объявить date
как int
.
Когда вы исправите это, вы заметите, что программа заканчивается немедленно из-за второй проблемы. Это связано с тем, что вы используете один и тот же файл для ввода и вывода. Когда вы открываете файл в режиме записи, это освобождает файл, поэтому читать нечего. Вы должны подождать, пока вы закончите чтение файла, прежде чем открывать его для вывода.
Третья проблема эта линия:
strcpy(text[i],date);
Аргументы strcpy()
должны быть строки, то есть указатели на нуль-терминатором массивы из char
, но text[i]
и date
являются char
(одиночные символы). Убедитесь, что включены предупреждения о компиляторе - эта строка должна была предупредить вас о неправильных типах аргументов. Чтобы скопировать отдельные символы, просто использовать обычное задание:
text[i] = date;
Но я не совсем уверен, что вы собираетесь с этим циклом, который копирует date
в каждый text[i]
. Я подозреваю, что вы хотите скопировать каждый символ, который вы читаете, в следующий элемент text
, а не во всех из них.
Наконец, когда вы сохраняли в text
, вы не сохранили версию в нижнем регистре.
Вот исправленная программа. Я также добавил нулевой терминатор text
, и изменил вторую петлю, чтобы проверить, что вместо жесткого кодирования длиной 27.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void main(void) {
int i = 0;
int date;
char text[100];
FILE *file;
FILE *file1;
file = fopen("C:\\Users\\amzar\\Desktop\\PC\\Pregatire PC\\Pregatire PC\\file\\da.txt","r");
printf("\nSe citeste fisierul si se copiaza textul:\n ");
if(file) {
while ((date = getc(file)) != EOF) {
putchar(tolower(date));
text[i++] = tolower(date);
}
text[i] = '\0';
fclose(file);
} else {
printf("Can't open input file\n");
exit(1);
}
file1 = fopen("C:\\Users\\amzar\\Desktop\\PC\\Pregatire PC\\Pregatire PC\\file\\da.txt","w");
if (file1) {
for (i=0;text[i] != '\0';i++)
fprintf(file1,"%c",text[i]);
fclose(file1);
} else {
printf("Can't open output file\n");
exit(1);
}
}
Вашего компилятора должно выпустили диагностические сообщения об этом коде. Читай их. – EOF