fscanf的有关问题
fscanf的问题
word.txt的内容是:
输出为什么是这样的?
q[0]的值为什么会变?
------解决方案--------------------
q[i] = p;
q[i]指向了数组p.
p里面fscanf之后改变了.q[i]的内容必然会相应的改变啊
- C/C++ code
#include <stdio.h> #include <stdlib.h> int main() { FILE *fp; char p[10]; char *q[10]; int i = 0; int j, k; if((fp = fopen("word.txt", "r+")) == NULL) { printf("cannot open word.txt"); exit(0); } while (!feof(fp)) { fscanf(fp, "%s", p); q[i] = p; //还没执行这一行,q[i]的值就已经变了 for (j = 0; j <= i; j++) printf("q[%d] = %s\n", j, q[j]); printf("\n"); i++; } }
word.txt的内容是:
- C/C++ code
a bc def wxyz
输出为什么是这样的?
- C/C++ code
q[0] = a q[0] = bc q[1] = bc q[0] = def q[1] = def q[2] = def q[0] = wxyz q[1] = wxyz q[2] = wxyz q[3] = wxyz 请按任意键继续. . .
q[0]的值为什么会变?
------解决方案--------------------
q[i] = p;
q[i]指向了数组p.
p里面fscanf之后改变了.q[i]的内容必然会相应的改变啊