是否可以像这样声明一个二维数组:
char words[128][25];
然后像这样分配给它:
int i=0;
while(fscanf(fp,"%s" words[i++]) != EOF){
printf("Copied");
}
我在一段代码中看到了它,不明白所以试了一下,当它试图运行这一行时,它只是从代码块中崩溃。当它被这样声明时,它是一种完全无效的使用数组的方式吗?它编译得很好,只是不运行。
是否可以像这样声明一个二维数组:
char words[128][25];
然后像这样分配给它:
int i=0;
while(fscanf(fp,"%s" words[i++]) != EOF){
printf("Copied");
}
我在一段代码中看到了它,不明白所以试了一下,当它试图运行这一行时,它只是从代码块中崩溃。当它被这样声明时,它是一种完全无效的使用数组的方式吗?它编译得很好,只是不运行。
正如猛禽解释的那样,当你等于 EOF 时,你也会循环。这意味着你永远不会得到“复制”,除非文件是空的。你可能的意思是:
while(fscanf(fp,"%s",words[i++]) != EOF){
printf("Copied");
}
参考 Whoz 的评论,这是一个危险的代码,如果你的代码的行数多于用单词初始化的行数,那么你会得到一个异常,除此之外,我确实会说明提取的行数(或单词数) (-1)
这是使用数组的合法方式;问题似乎出在您的时间:
while(fscanf(fp,"%s words[i++]) == EOF){
您只需要在 . 后面加上一个结束引号和逗号"%s
。