У меня есть задача получить массив символов из одного текстового файла и поместить этот текст в другой файл. Я должен использовать две функции. Они должны выглядеть так:
int writeText(FILE *wp, char text[])
int readText(FILE *wp, char text[], int max)
Я должен использовать свою собственную функцию strlen (_strlen).
В функции readText они сказали, что я должен не забыть поставить '\ 0' на закончите и убедитесь, что я не помещаю слишком много знаков в массив (больше, чем размер массива).
Это мой код
#include <stdio.h>
#include <stdlib.h>
int _strlen (char *text)
{
int i;
for (i = 0; text[i] != '\0'; ++i);
return i;
}
int writeText(FILE *wp, char text[])
{
int len = _strlen(text);
for (int i = 0; i < len; i++) {
fputc (text[i], wp);
}
return _strlen(text);
}
int readText(FILE *wp, char text[], int max)
{
int length = _strlen(text);
int c;
int i = 0;
max = 10000;
while( (c = fgetc(wp)) != EOF && i <= max )
{
fputc (text[i], wp);
i++;
}
if (i > max)
{
printf("This array is too big.");
}
text[i] = '\0';
return _strlen(text);
}
int main (int argc, char *argv[])
{
if (argc != 3) {
printf("You should run program in this way:\n");
printf("%s file_source file_result\n",argv[0]);
exit(1);
}
int sum;
const char source[] = "source.txt"; // plik wejściowy
const char result[] = "result.txt"; // plik wyjściowy
FILE *wz, *wc; // wskaźnik do pliku
if( (wz= fopen(source,"r")) == NULL) {
printf("Open error %s\n", source);
exit(1);
}
if( (wc= fopen(result,"w")) == NULL) {
printf("Open error %s\n",result);
exit(2);
}
char tab1[1000];
readText(wz, tab1, 1000);
writeText(wc, tab1);
int fclose(FILE *wp);
int fclose(FILE *wc);
}
После запуска этой программы я получаю что-то вот так:
p\E2\B4&\FF
И я не знаю почему.