如何在文件中使用c打印根符号

时间:2014-04-16 13:13:12

标签: c file-io ascii

我有一个名为 output.txt 的文件,我想在其中打印根(√)符号。 这是我的程序

#include<stdio.h>
#include<conio.h>
void main(void)
{
    FILE *fptr;     
    fptr = fopen("output.txt","w+"); //open the file to write 
    fprintf(fptr,"\xfb");            // \xfb is the hexadecimal code for root symbol
    fclose(fptr);
}

但是当我运行程序(û)时会打印

1 个答案:

答案 0 :(得分:4)

您遇到的问题是因为您尝试使用部分扩展ASCII集(即:值大于127的字符)。 代码页是您设置的,因此如果设置了8位ASCII符号的MSB,它可以根据区域/区域设置,操作系统等映射到许多不同代码页中的一个(即:希腊语,拉丁语等)。在大多数情况下,ASCII字符通常被认为是7位,忽略了代码页启用位。

尝试使用扩展ASCII不是一种可移植的方法,因此您最好的选择是:

  1. 使用unicode
  2. 确保您的C编译器符合C99标准。
  3. 以下示例解决了原始问题。

    源代码


    #include <stdio.h>
    
    void main(void) {
        FILE *fptr;     
        fptr = fopen("output.txt","w+"); //open the file to write 
        fprintf(fptr, "\u221A\n");
        fclose(fptr);
    }
    

    样本运行的输出


    <强>参考


    1. 如何通过C程序打印127到160的扩展ASCII字符?,已访问2014-04-16,<https://stackoverflow.com/questions/16359225/how-to-print-extended-ascii-characters-127-to-160-in-through-a-c-program>
    2. Unicode字符&#39; SQUARE ROOT&#39; (U + 221A),访问2014-04-16,<http://www.fileformat.info/info/unicode/char/221a/index.htm>