读书人

fscanf的有关问题

发布时间: 2012-05-03 14:06:56 作者: rapoo

fscanf的问题

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] = aq[0] = bcq[1] = bcq[0] = defq[1] = defq[2] = defq[0] = wxyzq[1] = wxyzq[2] = wxyzq[3] = wxyz请按任意键继续. . .


q[0]的值为什么会变?

[解决办法]
q[i] = p;
q[i]指向了数组p.
p里面fscanf之后改变了.q[i]的内容必然会相应的改变啊

读书人网 >C语言

热点推荐