Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как на C преобразовать конец строк в формат Windows кроссплатформенно?

колесникова наталья Знаток (357), на голосовании 4 месяца назад
Голосование за лучший ответ
Валя Апофис Мудрец (15579) 5 месяцев назад
Натусь, котёнок , зачем тебе эта информация?
Дед Мороз Ученик (107) 5 месяцев назад
#include <stdio.h>
int main(int argc,char**argv){
FILE*f;
FILE*of;
int c;
if(argc!=3){
puts("nix2dos source.txt dest.txt");
return 0;
}
f=fopen(argv[1],"rb");
if(!f)return 1;
of=fopen(argv[2],"wb");
if(!of){
fclose(f);
return 2;
}
for(c=getc(f);c!=EOF;){
if(c==13||c==10){
putc(13,of);
putc(10,of);
if(c==13){
c=getc(f);
if(c!=10)continue;
}
}else putc(c,of);
c=getc(f);
}
fclose(of);
fclose(f);
return 0;
}
Лайт Ягами Искусственный Интеллект (309937) 5 месяцев назад
Только переписыванием в новый файл, т.к. при замене концов строк с 10 на 13 10 увеличится количество байт
Татьяна Просветленный (36384) 5 месяцев назад
Как на C преобразовать конец строк в формат Windows кроссплатформенно?
 #include  
#include

void convert_to_crlf(const char *input_filename, const char *output_filename) {
FILE *input_file = fopen(input_filename, "r");
if (input_file == NULL) {
perror("Failed to open input file");
exit(EXIT_FAILURE);
}

FILE *output_file = fopen(output_filename, "w");
if (output_file == NULL) {
perror("Failed to open output file");
fclose(input_file);
exit(EXIT_FAILURE);
}

int ch;
while ((ch = fgetc(input_file)) != EOF) {
if (ch == '\n') {
fputc('\r', output_file);
fputc('\n', output_file);
} else if (ch == '\r') {
fputc('\r', output_file);
if ((ch = fgetc(input_file)) != EOF && ch != '\n') {
fputc(ch, output_file);
} else {
fputc('\n', output_file);
}
} else {
fputc(ch, output_file);
}
}

fclose(input_file);
fclose(output_file);
}

int main(int argc, char *argv[]) {
if (argc != 3) {
fprintf(stderr, "Usage: %s \n", argv[0]);
exit(EXIT_FAILURE);
}

convert_to_crlf(argv[1], argv[2]);
printf("File converted successfully.\n");

return 0;
}
Похожие вопросы