在Windows中没有回车符(CR)的情况下将新行打印到文本文件中

我正在用C编写一个程序,它将随机的hex值打印到文本文件中。 打印值具有回车(CR)和换行(LF)。 但是,CR(在notepad ++中可见)在使用文件时会导致问题。 有没有办法打印一个只有LF和没有CR的新行。

这是代码:

#include  #include  void main(){ int hexa_address, numberofAddress; char tracefile[50]; //name of file int seq_or_rand; //1 for random address; 2 for sequential address srand(time(NULL)); //reset the value of the random printf("This generator generates 32bits hexadecimal.\n\n"); printf("Name of file: "); scanf("%s", tracefile); printf("Random (1) or Sequential (2): "); scanf("%d", &seq_or_rand); FILE *file; file = fopen(tracefile,"w"); // create file if(seq_or_rand == 1){ //random generator file = fopen(tracefile,"w"); // create file for(numberofAddress = 0; numberofAddress<10000;numberofAddress++){ //create 10000 address //if(numberofAddress!=0) fprintf(file, "0 "); int space = 0; for(space; space<8; space++){ //remove any 0 from the left hexa_address = rand() % 16; if(hexa_address != 0){ fprintf(file,"%x", hexa_address); space++; break; } else if(hexa_address == 0 && space == 7){ //in condition of 00000000 fprintf(file, "0"); space++; } } for(space; space<8; space++){ //continue generating the remaining address hexa_address = rand() % 16; fprintf(file,"%x", hexa_address); } if(numberofAddress!=99999) fprintf(file,"\t"); //start a new line, but not on the last one } } else if(seq_or_rand == 2){ //sequential generator file = fopen(tracefile,"w"); // create file for(numberofAddress = 0; numberofAddress<10000;numberofAddress++){ //create 10000 address if(numberofAddress!=0) fprintf(file,"\n"); //start a new line, but not on the first one fprintf(file,"0 "); fprintf(file,"%x", numberofAddress*4); } } else{ //invalid input printf("Invalid Input"); exit(1); } fclose(file); //done } 

以二进制模式打开/创建文件

 file = fopen(tracefile, "wb"); ^ Binary mode 

除此以外

 fprintf(file,"\n"); /* In text mode this appends two characters. */