【问题标题】:How to output (using the write statement) an apostrophe " ' "?如何输出(使用 write 语句)撇号“'”?
【发布时间】:2015-05-19 02:09:03
【问题描述】:

我想在 Fortran 90 中使用系统命令来执行以下命令:

command =  awk '{print "C"NR,$1,$2,$3}' filename1 > filename2
call system(trim(command))

这里我的文件名 1 和文件名 2 是 Fortran 90 程序中的变量。 但问题是任何字符都可以分配给一个包含在撇号之间的变量,而我的变量也应该由撇号组成。我不知道如何在 Fortran 90 中输入。

【问题讨论】:

    标签: linux fortran system fortran90


    【解决方案1】:

    只需在字符串内连续使用两个撇号

    command =  'awk ''{print "C"NR,$1,$2,$3}'' filename1 > filename2'
    

    另外,因为我没有注意到filename1filename2 是变量,所以你必须按照chw21 所示附加它们:

     // trim(filename1)//' > '//trim(filename2)
    

    【讨论】:

    • 非常感谢。
    • @MubeenaShaikh 不用谢,但可以考虑采纳答案。
    【解决方案2】:

    你可以尝试为单引号使用一个参数,像这样:

    character, parameter :: sq = "'"
    

    然后你可以像这样把东西链接在一起:

    command = 'awk '//sq//'{print "C"NR,$1,$2,$3}'//sq//' '// &
               trim(filename1)//' > '//trim(filename2)
    

    或者,您可以在单引号和双引号字符串之间交换:

    command = "awk '" // '{print "C"NR,$1,$2,$3}' // "' " // &
               trim(filename1) // ' > ' // trim(filename2)
    

    你根本不应该使用 Hollerith 格式指令:

         write(command, 100) trim(f1), trim(f2)
    100  FORMAT(29Hawk '{print "C"NR,$1,$2,$3}' , A, " > ", A)
    

    这就是为什么我什至不告诉你。哦。

    【讨论】:

    • 说真的,不要使用 hollerith。从 Fortran 95 开始,它已被删除,因为它产生的问题多于解决的问题。
    • 感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    相关资源
    最近更新 更多