读取文件字符=========问题
#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”呢?
十分疑惑...
[解决办法]
楼主看代码注释,看是不是这种情况。
#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;}