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