Question

I have a file named output.txt and i want to print in a root (√) symbol in it. Here is my program

#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);
}

but when i run the program (û) is printed in it

Was it helpful?

Solution

The problem you are encountering is because you are attempting to use part of the extended ASCII set (ie: characters above 127 in value). The code page is something you set so that if the MSB of an 8-bit ASCII symbol is set, it can map to one of many different code pages depending on region/locale, OS, etc (ie: Greek, Latin, etc). In most cases, ASCII characters are generally considered to be 7-bit, ignoring the code page enable bit.

Attempting to use extended ASCII is not a portable approach, so your best alternative is to:

  1. Make use of unicode
  2. Make sure your C compiler is C99 compliant.

The following example resolves the original problem.

Source Code


#include <stdio.h>

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

Output from Sample Run


References


  1. How to print Extended ASCII characters 127 to 160 in through a C program?, Accessed 2014-04-16, <https://stackoverflow.com/questions/16359225/how-to-print-extended-ascii-characters-127-to-160-in-through-a-c-program>
  2. Unicode Character 'SQUARE ROOT' (U+221A), Accessed 2014-04-16, <http://www.fileformat.info/info/unicode/char/221a/index.htm>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top