本文介绍了在 Windows 中无需回车 (CR) 将新行打印到文本文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在用 C 编写一个程序,将一个随机的十六进制值打印到一个文本文件中.打印的值有一个回车 (CR) 和一个换行 (LF).但是,当使用文件时,CR(在记事本++中可见)会导致问题.有没有办法只用 LF 而没有 CR 打印新行.
I am writing a program in C that prints a random hexadecimal value to a text file. The printed value has a carriage return (CR) along with a line feed (LF). However, the CR (visible in notepad++) is causing issues when the file is used. Is there a way to print a new line with just the LF and no CR.
这是代码:
#include <stdio.h>
#include <stdlib.h>
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.
");
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," "); //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,"
"); //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
}
推荐答案
以二进制方式打开/创建文件
Open/create the file in binary mode
file = fopen(tracefile, "wb");
^ Binary mode
否则
fprintf(file,"
"); /* In text mode this appends two characters. */
这篇关于在 Windows 中无需回车 (CR) 将新行打印到文本文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!