C 检索数组的元素

C 检索数组的元素,c,arrays,C,Arrays,我刚开始学习C,我一直在打印数组的元素。我想读取一个.txt文件并将其保存到数组中。然后打印数组的元素 文本文件显示: 1 2 3 4 我的C代码说: #include <stdlib.h> #include <stdio.h> int main() { FILE *fp; char myArray[30]; int wordCount = 0, i; fp = fopen("list.txt", "r"); if(fp != NULL) { whil

我刚开始学习C,我一直在打印数组的元素。我想读取一个.txt文件并将其保存到数组中。然后打印数组的元素

文本文件显示:

1
2
3
4
我的C代码说:

#include <stdlib.h>
#include <stdio.h>

int main() {

FILE *fp;
char myArray[30];
int wordCount = 0, i;


fp = fopen("list.txt", "r");

if(fp != NULL) {
    while(!feof(fp)) {
        fscanf(fp, "%s", &myArray[wordCount]);
        wordCount++;}
    }

printf("%s\n", myArray);
printf("%s\n", &myArray[1]);      // intend to print 2nd element
printf("%d\n", arrayOfWords[1]);  // intend to print 2nd element

return 0;
}

&myArray[1]
myArray[1]
都不起作用。

这里的问题是,myArray[]不是字符串数组,它只是一个字符串。。。 您可以通过如下定义myArray来解决此问题

   //30 string array each holding 30 characters.
   char myArray[30][30]

printf(“%c\n”,myArray[1])因为您没有检查fscanf的返回值,所以无论您是否实际读取了一个单词,您都会增加wordcount。经常检查返回值。阅读代码中的一个错误很有用:你真的想为所有读取的字符串在同一个字符数组中使用不同的偏移量吗?在打印它们时,这根本不起作用,并且会给你真正的缓冲区溢出……@ BeldCal码:在这种情况下,使用<代码> %%C“作为格式字符串,而不是<代码>”%s“”(注意<>代码> %之前的空白,跳过任何空白都是必要的)。另外,
while(!feof(fp))
无法按您期望的方式工作-更好的方法是
while(fscanf(fp),%c,&myArray[wordcount])==1)wordcount++
   //30 string array each holding 30 characters.
   char myArray[30][30]