c语言如何以Ascii码的形式读取文本文件呢?
c语言如何以Ascii码的形式读取文本文件呢?
比如我在一个文本文件中写一行如下的字符串:
abc\x64e\x66g
其中\x64和\x66是字母d和f的Ascii码,
我希望在程序在读取文件的这一行后,printf这个字符串时是:
abcdefg
而不是:
abc\x64e\x66g
C语言可以比较简单的做到吗?
谢谢。。。
[解决办法]
不简单,需要自己解析。
[解决办法]
比较麻烦吧,不说别的,你那个\x64e,是\x6然后是 '4 ', 'e ',或者\x64e都是个问题哦
[解决办法]
一个个读,发现转义字符 '\ '判断转义,读入一个整数,但是有一些问题:
我要表示:d2
\x642
造成读入不明确到底是解析\x6 42还是\x64 2?
[解决办法]
可以试用一下,不过考虑的情况比较简单.
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main()
{
FILE *file;
int i;
char c,b;
file=fopen( "asc.txt ", "r ");
while(!feof(file))
{
c=getc(file);
if(c== '\\ ')
{
b=getc(file);
if(b== 'x '||b== 'X ')
{
fscanf(file, "%2x ",&c);
printf( "%c ",c);
}
}else printf( "%c ",c);
}
fclose(file);
printf( "\n ");
}
[解决办法]
在楼上的程序上又加了进一步的处理:
如读 "abc\x64e\x66g\xabc "时,最后有一个\x,但没有数字,增加了这种特殊情况的处理.
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
//abc\x64e\x66g
int main(){
FILE *file;
int i;
char c,b;
char num;
file=fopen( "asc.txt ", "r ");
while(!feof(file)) {
c=getc(file);
if(c== '\\ ') {
b=getc(file);
if(b== 'x '||b== 'X ') {
num = getc(file);
if (isdigit(num)) { // 如果\x后面的是数字
fseek(file, -1, SEEK_CUR);// 文件指针向后退1
fscanf(file, "%2x ",&c); // 然后读取
printf( "%c ",c);
} else { // 如果\x后面的不是数字,直接输出.
printf( "%c ", num);
}
}
}else printf( "%c ",c);
}
fclose(file);
printf( "\n ");
}