Почему printf создает оконные строки? - PullRequest
3 голосов
/ 22 октября 2019

Итак, я пытаюсь скопировать (и позже изменить) файл .ppm. Я на Windows 10, используя Mingw G ++. Исходный файл только LF, но созданный с моей программой имеет CRLF, который разбивает файл .ppm. Я нигде не делаю \ r \ n, но он все равно выводится.

FILE *fp;
FILE *dest;

char magicNumber[3];
int width, height, depth;
unsigned char red, green, blue;
unsigned char* buff;

printf("Hello, World!\n");


fp = fopen("lenna.ppm", "r+");

fscanf(fp, "%s", magicNumber);
fscanf(fp, "%d %d %d", &width, &height, &depth);
printf("%s %d %d %d nums\n", magicNumber, width, height, depth);


dest = fopen("lena2.ppm", "w+");
fprintf(dest, "%s\n%d %d\n%d", magicNumber, width, height, depth);

Результаты в

enter image description here

ПОЧЕМУ?

Я хочу только LF. Как мне это сделать?

1 Ответ

6 голосов
/ 22 октября 2019

Откройте ваш файл в двоичном режиме:

fopen("lena2.ppm", "wb+");

Из документов :

В текстовом режиме переводятся комбинации перевода строки перевода строки. в однострочные переводы на входе, а символы перевода строки переводятся в комбинации возврата каретки с переводом строки на выходе.

...