Arrays 使用C从文件中读取整数并将其添加到数组中。但是当我试图打印数组时,我会打印地址

Arrays 使用C从文件中读取整数并将其添加到数组中。但是当我试图打印数组时,我会打印地址,arrays,c,Arrays,C,我不确定我会错在哪里。 我正在尝试读取的文件: 12 2 3 3 3 3 4 4 5 5 5 5 5 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 9 9 9 10 10 11 11 11 12 12 12 12 12 12 13 13 13 14 14 14 15 15 15 15 15 15 16 16 16 16 17 18 18 18 18 18 19 19 19 19 19 19 20 20 20 20 20 20 21 21 21 21 21 22 22

我不确定我会错在哪里。 我正在尝试读取的文件:

12
2 3 3 3 3 4 4 5 5 5 
5 5 5 5 5 6 6 6 7 7 
7 8 8 8 9 9 9 9 9 9 
10 10 11 11 11 12 12 12 12 12 
12 13 13 13 14 14 14 15 15 15 
15 15 15 16 16 16 16 17 18 18 
18 18 18 19 19 19 19 19 19 20 
20 20 20 20 20 21 21 21 21 21 
22 22 23 23 24 25 25 25 26 26 
这是我的代码:

#include<stdio.h>
using namespace std;
int main(){
    FILE *fptr;
    char FILENAME[100];
    printf("Enter the name of the file:");
    gets(FILENAME);
    fptr=fopen(FILENAME,"r");
    if(fptr==NULL){
        printf("File could not be opened");
    }
    int count=0,space=0;

    while ((count = fgetc(fptr)) != EOF)
        {
            if (count == ' ')
                space++;

        }
       printf("Number of integers in file: %d \n\n",space);  
    int storedData[space];
    for(int i=0;i<space;i++){
          fscanf(fptr,"%d", &storedData[i]);
          
    }
    for(int i=0;i<space;i++){
        printf("%d \n", storedData[i]);  
    }
       
    return 0;
} ```

**Output**
Enter the name of the file:Listofnumbers.dat
Number of integers in file: 100 

0
0
0
0
-810195648
22737
-83690506
32763
10904080
0
34
0
-83207872
32763
56
0
0
0
0
0
34
0
-83690617
32763
1
0
0
0
1
0
0
0
0
0
-83696309
32763
0
0
0
0
8
0
16
0
34
0
-83529122
32763
1
0
-83232208
32763
0
0
-810189776
22737
34
0
-83479343
32763
-83232208
32763
-83232208
32763
6421816
0
-83232208
32763
34
0
-83522581
32763
6421808
0
-83232208
32763
1
0
-83232208
32763
-83232112
32763
70
0
10884048
0
400
0
4199998
0
4210744
0
100
0
-83207872
32763
6421512
0
#包括
使用名称空间std;
int main(){
文件*fptr;
字符文件名[100];
printf(“输入文件名:”);
获取(文件名);
fptr=fopen(文件名,“r”);
如果(fptr==NULL){
printf(“无法打开文件”);
}
整数计数=0,空格=0;
而((计数=fgetc(fptr))!=EOF)
{
如果(计数=“”)
空间++;
}
printf(“文件中的整数数:%d\n\n”,空格);
int storedData[空间];

对于(int i=0;i检查
fscanf()
中的返回值

在尝试重新读取之前,请先倒带文件


,或者-这太危险了。

检查
fscanf()
中的返回值

在尝试重新读取之前,请先倒带文件


,要么太危险,

使用命名空间STD;是C++,不是C。代码不应该编译。和过时。通过阅读一个好的C标准进行检查,比如如果允许的话,使用最近使用的编译器作为
gcc-Wall-Wextra-g
编译您的C代码。不要忘记阅读编译器的文档。然后使用调试器,例如。当然,阅读调试器的文档。您正在打印未初始化的内存。请检查return
fscanf的值
,如果它表示失败,请不要继续打印无法读取的位置。感谢@Basile Starynkevitch的帮助,它现在可以在倒带文件后工作。但是每当有换行符时,都会显示大量的零,我不确定原因。我不能使用%c,因为我需要将数字存储在1中0乘10数组。使用<命名空间STD >代码> <代码>是C++,不是C。代码不应该编译。和过时。通过阅读一个好的C标准进行检查,比如如果允许的话,使用最近使用的编译器作为
gcc-Wall-Wextra-g
编译您的C代码。不要忘记阅读编译器的文档。然后使用调试器,例如。当然,阅读调试器的文档。您正在打印未初始化的内存。请检查return
fscanf的值
,如果它表示失败,请不要继续打印无法读取的位置。感谢@Basile Starynkevitch的帮助,它现在可以在倒带文件后工作。但是每当有换行符时,都会显示大量的零,我不确定原因。我不能使用%c,因为我需要将数字存储在1中0 x 10数组。在倒带文件后,它现在可以工作。但是,每当有换行符时,都会显示大量的零,我不知道为什么。我不能使用%c,因为我需要将数字存储在10 x 10数组中。你在计算整数之间的空格;你可能也需要计算换行符。你得到的
空格
的值是多少?如果你需要的话获取90(10行中每行有9个空格分隔符),您分配的空间不足。您还应该允许多个连续的空格字符,尽管这些字符只会增加使用的空间。您可能需要计算实际读取的数字数。如果您了解动态内存分配,可以使用
malloc()
等来分配空间。如果文件总是只包含100个数字,您可以简单地分配一个包含100个整数的数组。在倒带文件后,它现在可以工作。但是每当有换行符时,都会显示很多零,我不知道为什么。我不能使用%c,因为我需要将数字存储在一个10乘10的数组中。您正在计算spa整数之间的ces;您可能还需要计算换行符。对于
空格
,您得到的值是多少?如果您得到90(10行中每行有9个空格分隔符),您没有分配足够的空间。您还应该允许使用多个连续的空格字符,尽管这些字符只会增加使用的空间。您可能需要计算实际读取的数字数。如果您了解动态内存分配,可以使用
malloc()
等来分配空间。如果文件总是只包含100个数字,您可以简单地分配一个包含100个整数的数组。