首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

读取文件字符=========有关问题

2012-04-10 
读取文件字符问题#include string.h#include stdio.h#include stdlib.hint readflag(char

读取文件字符=========问题
#include <string.h>
#include <stdio.h>

#include <stdlib.h>
int readflag(char *calledNum, int *flag) {
FILE * pFile;
char ch;
strcat(calledNum, ".txt");
printf("calledNum2=====%s\n", calledNum);
if ((pFile = fopen(calledNum, "rt")) != NULL) {
ch = fgetc(pFile);
flag = (int *)(ch - '0');
printf("ch=====%c\n", ch);
printf("flag=====%d\n", flag);
}
fclose(pFile);
return 0;
}

int main(int argc, char **argv) {
int *flag1=NULL;
readflag("1234",flag1);
printf("flag1=====%d\n", flag1);
return 0;
}
1234.txt中的内容是0(数字0)

我用cywin在windows下gcc编译运行结果如下:

calledNum2=====1234.txt
ch=====0
flag=====0
txt

求高手告知,为什么“printf("flag1=====%d\n", flag1);”打印的内容会是“txt”呢?
十分疑惑...


[解决办法]
楼主看代码注释,看是不是这种情况。

C/C++ code
#include <string.h>#include <stdio.h>#include <stdlib.h>int readflag(char *calledNum, int* flag) {    FILE * pFile;    char ch;//    strcat(calledNum, ".txt");  // calledNum字面值字符串,是常量,不能修改,所以这里会有错.    printf("calledNum2=====%s\n", calledNum);    if ((pFile = fopen(calledNum, "rt")) != NULL)     {        ch = fgetc(pFile);    flag = (int *)(ch - '0');        printf("ch=====%c\n", ch);        printf("flag=====%d\n", flag);    }    fclose(pFile);    return 0;}int main(int argc, char **argv){    int *flag1=NULL;    readflag("1234.txt",flag1);  //这样直接传1234.txt试试。    printf("flag1=====%d\n", flag1);    return 0;} 

热点排行