GVKun编程网logo

在C中读取文本文件时,如何阻止Windows C库将“ r n”转换为“ n”?(c读取文本文件内容)

20

本文将带您了解关于在C中读取文本文件时,如何阻止WindowsC库将“rn”转换为“n”?的新内容,同时我们还将为您解释c读取文本文件内容的相关知识,另外,我们还将为您提供关于domain-name-

本文将带您了解关于在C中读取文本文件时,如何阻止Windows C库将“ r n”转换为“ n”?的新内容,同时我们还将为您解释c读取文本文件内容的相关知识,另外,我们还将为您提供关于domain-name-system – 如何阻止Windows DNS服务器属性设置自行更改?、Java-通过在读取文本文件时覆盖而从文本文件中删除行、java中写入文件时换行符是用”/r/n”还是”/n”?、R:将“rmarkdown”转换为“html”文件的实用信息。

本文目录一览:

在C中读取文本文件时,如何阻止Windows C库将“ r  n”转换为“ n”?(c读取文本文件内容)

在C中读取文本文件时,如何阻止Windows C库将“ r n”转换为“ n”?(c读取文本文件内容)

我有一个正常的文本文件,以正常结束 r n。 但是,使用“打开”和“读取”时,Windows会将所有 r n转换为 n。 我知道这意味着我必须以二进制模式打开文件,但“打开”function不提供此选项,它只有只读,只写或读写。

这是代码:

int File_Size = ...; char* Buffer = (char*)malloc(File_Size); int Handle = open(File_Path,O_RDONLY); read(Handle,Buffer,File_Size); close(Handle);

如何查看一个字符是否等于一个新行

为什么回车在新行之前

sqlite如何在MSWindows上保存一个换行符?

HTML ::整洁的Windows换行问题

在Tcl中:分别将-eofchar设置为windows / unix

Linux操作系统。 将文件的内容设置为环境variables时如何保留行?

在Windows中打印到控制台时需要回车吗?

如何使用Linux邮件命令在电子邮件中插入新行?

Java代码意外地将“&#13”附加到行尾

在控制台上的Windows上打印回车

尝试使用O_RDONLY|O_BINARY 。

总结

以上是小编为你收集整理的在C中读取文本文件时,如何阻止Windows C库将“\ r \ n”转换为“\ n”?全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

domain-name-system – 如何阻止Windows DNS服务器属性设置自行更改?

domain-name-system – 如何阻止Windows DNS服务器属性设置自行更改?

当我在管理工具中打开DNS控制台时,我会不断发现一些问题,这些问题会不断重现,我想阻止它们发生.

其中一个DNS服务器有两个网络接口,它应该只监听它们的请求,否则我会在事件日志中收到错误.但是当右键单击一个DNS服务器并选择“属性”时,我可以在“接口”选项卡上看到“所有IP地址”已被选中.如果我将其更改为“仅以下IP地址:”并删除WAN广告,我会在几天后再次检查时发现它已被重新选中.

在其他DNS服务器的“属性”中,在“转发器”选项卡上,应该只有两个转发器地址.但是,路由器的地址不断出现.此路由器具有DNS服务器作为其转发器.除路由器本身之外,不应该使用路由器的DNS转发器用于DNS,但这肯定会导致循环.

如何在两台DNS服务器上获取这些属性?

解决方法

事件ID 410似乎表明DNS服务器查看允许响应请求的接口列表,并且它不包含自己的IP地址.它似乎在说,当它发现自己处于该状态时,它会自动将自己设置回“所有IP地址”,这是您报告的行为.

也许您的DNS服务器设置为使用DHCP作为其IP地址,并且它正在被更改.将其更改为静态IP寻址可能会解决问题.

也许它被设置为静态IP寻址,并且故意改变地址.

Java-通过在读取文本文件时覆盖而从文本文件中删除行

Java-通过在读取文本文件时覆盖而从文本文件中删除行

我正在尝试从文本文件中删除一行文本,而不将其复制到临时文件中。我正在尝试通过使用Printwriter和Scanner并让它们同时遍历文件来实现此目的,writer写Scanner读取的内容并用相同的东西覆盖每一行,直到到达我希望的行为止删除。然后,我前进扫描仪而不是写程序,然后像以前一样继续。这是代码:

但首先要使用参数:我的文件名是数字,因此它将显示为1.txt或2.txt等,因此f指定了文件名。我将其转换为文件的构造函数中的String。Int
n是我要删除的行的索引。

public void deleteLine(int f, int n){ try{ Scanner reader = new Scanner(new File(f+".txt"));  PrintWriter writer = new PrintWriter(new FileWriter(new File(f+".txt")),false);  for(int w=0; w<n; w++)   writer.write(reader.nextLine());  reader.nextLine();  while(reader.hasNextLine())   writer.write(reader.nextLine()); } catch(Exception e){   System.err.println("Enjoy the stack trace!");   e.printStackTrace(); }}

它给了我奇怪的错误。它在堆栈跟踪中显示“
NoSuchElementException”和“未找到行”。它指向不同的线;似乎任何nextLine()调用都可以做到这一点。是否可以通过这种方式删除行?如果是这样,我在做什么错?如果没有,为什么?(顺便说一句,以防万一,如果您想要的话,文本文件大约有500行。不过,我不知道那是不是很大,甚至不重要。)

答案1

小编典典

正如其他人指出的那样,如果程序可能会在中途崩溃,则使用临时文件可能会更好:

public static void removeNthLine(String f, int toRemove) throws IOException {    File tmp = File.createTempFile("tmp", "");    BufferedReader br = new BufferedReader(new FileReader(f));    BufferedWriter bw = new BufferedWriter(new FileWriter(tmp));    for (int i = 0; i < toRemove; i++)        bw.write(String.format("%s%n", br.readLine()));    br.readLine();    String l;    while (null != (l = br.readLine()))        bw.write(String.format("%s%n", l));    br.close();    bw.close();    File oldFile = new File(f);    if (oldFile.delete())        tmp.renameTo(oldFile);}

(请注意对编码,换行符和异常处理的草率处理。)


但是,我不喜欢用“ 我不会告诉您怎么做,因为您无论如何都不应该这样做 ”来回答问题。(例如,在某些其他情况下,您可能正在使用大于硬盘一半大小的文件!)

您需要使用RandomAccessFile代替。使用此类,您可以使用同一对象读取和写入文件:

public static void removeNthLine(String f, int toRemove) throws IOException {    RandomAccessFile raf = new RandomAccessFile(f, "rw");    // Leave the n first lines unchanged.    for (int i = 0; i < toRemove; i++)        raf.readLine();    // Shift remaining lines upwards.    long writePos = raf.getFilePointer();    raf.readLine();    long readPos = raf.getFilePointer();    byte[] buf = new byte[1024];    int n;    while (-1 != (n = raf.read(buf))) {        raf.seek(writePos);        raf.write(buf, 0, n);        readPos += n;        writePos += n;        raf.seek(readPos);    }    raf.setLength(writePos);    raf.close();}

java中写入文件时换行符是用”/r/n”还是”/n”?

java中写入文件时换行符是用”/r/n”还是”/n”?

java中写入文件时换行符是用"/r/n"还是"/n"?

/r 叫回车 Carriage Return 
/n 叫新行 New Line 
但是都会造成换行 
使用 System.getProperty("line.separator")来获取当前OS的换行符,可以在调试的情况下看到! 

各系统应当是: 
/r Mac 
/n Unix/Linux 
/r/n Windows

这种输出的主要表现在用notepad打开时的显示。使用其他编辑器则没有明显变化!!

在winodws下,如果用"/n",则会显示成如下:

image

如果使用"/r/n",则会显示出换行的效果。

image

R:将“rmarkdown”转换为“html”文件

R:将“rmarkdown”转换为“html”文件

dashboard.Rmd 中保存文件后,点击 Knit -> Knit to flex_dasboard

enter image description here

这会在 RStudio 本身中打开仪表板模板。这还会在您的工作目录中自动创建一个具有相同名称 (dashboard.html) 的 HTML 文件。

enter image description here

今天关于在C中读取文本文件时,如何阻止Windows C库将“ r n”转换为“ n”?c读取文本文件内容的介绍到此结束,谢谢您的阅读,有关domain-name-system – 如何阻止Windows DNS服务器属性设置自行更改?、Java-通过在读取文本文件时覆盖而从文本文件中删除行、java中写入文件时换行符是用”/r/n”还是”/n”?、R:将“rmarkdown”转换为“html”文件等更多相关知识的信息可以在本站进行查询。

本文标签: