我在fortran中从txt文件读取处理器id时遇到问题
我正在尝试创建一个用于定义处理器id的Fortran代码。我可以将处理器id写入文本文件。文本文件我在fortran中从txt文件读取处理器id时遇到问题,fortran,Fortran,我正在尝试创建一个用于定义处理器id的Fortran代码。我可以将处理器id写入文本文件。文本文件pid2.txt已创建,但我无法用Fortran读取它。当我在notepad或notepad++中打开文本文件时,一切似乎都正常!在Fortran中,当我打开文本文件时,它显示未知参数。有人能帮我解决这个问题吗 文本文件的内容是 ProcessorId BFEBFBFF00010676 示例代码如下所示: program get_PID implicit none charact
pid2.txt
已创建,但我无法用Fortran读取它。当我在notepad
或notepad++
中打开文本文件时,一切似乎都正常!在Fortran中,当我打开文本文件时,它显示未知参数。有人能帮我解决这个问题吗
文本文件的内容是
ProcessorId
BFEBFBFF00010676
示例代码如下所示:
program get_PID
implicit none
character(200) :: line
call system('wmic cpu get ProcessorId >pid2.txt ' )
open (1,file='pid2.txt')
read (1,*) line
read (1,*) line
CLOSE (1)
end program
您有什么建议吗?您的问题是
wmic
输出的编码。Windows默认使用UTF-16。Fortran还不能处理这种编码。参考英特尔Fortran的帮助,如前所述,仅支持UTF-8
因此,您必须将输出的编码更改为ANSI和/或本地代码页。这可以通过管道将wmic
的结果通过more
命令来完成,如SO超级用户站点中的所述
请按以下方式更改您的系统调用:
call system('wmic cpu get ProcessorId | more >pid2.txt ' )
正如预期的那样,现在您将在代码中获得处理器ID信息
希望有帮助。您尝试过更换IO单元吗?您使用的是什么版本的Fortran和什么编译器?若你们使用的是GCC,你们可以直接调用。你们读了两行,为什么?否则,请告诉我们您使用的编译器和编译器版本、您编译程序的具体方式以及错误消息的具体内容。我使用的是英特尔FORTRAN 2015,使用的是visual studio 2013。编译器没有显示错误。我不知道如何通过这个命令“call system('wmic cpu get ProcessorId>pid2.txt')来更改IO单元。它是用Fortran拼写的,已经正式使用了30年。如果没有错误,为什么你认为这是错误的?我不明白您所说的“在Fortran中,当我打开文本文件时,它显示未知参数”Hi M Ch.Sound很好,该命令解决了您的问题:)。请你把这个答案标为已接受的答案好吗?只需按下我帖子左侧的灰色复选标记。谢谢,已经做好了,亲爱的