声明一个2d char数组?

时间:2013-03-25 15:57:12

标签: c

是否可以像这样声明一个2D数组:

char words[128][25];

然后只分配给它:

int i=0;

while(fscanf(fp,"%s" words[i++]) != EOF){  
 printf("Copied");
}  

我已经在一段代码中看到它,不明白所以试了一下,当它尝试运行这一行时,只是从代码块中获得崩溃。当它被声明为这样时,它是一种完全无效的使用数组的方法吗?它编译得很好,只是没有运行。

2 个答案:

答案 0 :(得分:2)

这是使用数组的合法方式;问题似乎出现在你的时间:

while(fscanf(fp,"%s words[i++]) == EOF){

您需要在"%s之后使用结束引号和逗号。

答案 1 :(得分:2)

和猛禽解释的一样, 当你等于EOF时你也会循环。 这意味着你永远不会得到“复制”,除非文件是空的.. 你可能意味着:

while(fscanf(fp,"%s",words[i++]) != EOF){  
 printf("Copied");
}  
  • 编辑:

参考Whoz评论,这是一个危险的代码,如果你的代码有多行而不是用单词初始化,那么你会得到一个例外,除此之外,我确实会说出行数(或者单词)提取(-1)