# include <stdio.h>
main()
{
    FILE *fp;
    int a[10], n, i;
    char file_name[20];
    printf("enter the file name \n");
    scanf("%s", file_name);
    printf("enter number of integers \n");
    scanf("%d", &n);
    fp = fopen(file_name, "rb");
    if (fp == NULL) {
        printf("Error in opening file \n");
        return;
    }
    fread(a, 1, n, fp);
    for (i = 0; i < n; i++) {
        printf("%d \n", a[i]);
    }
}输出:
输入文件名/home/n/t1.txt输入整数数3 1540736144 1540736144 1540736144..
在文件t1.txt中,我输入了整数{10,20,30,40.50},并存储在路径/home/n/t1.txt中。
但在输出中,它显示了一些垃圾地址。请指导我如何显示文件中存储的整数..
发布于 2015-12-16 20:39:41
您的文件是文本文件,它是人类可读的,并且可以在文本编辑器中进行编辑。您可以将其视为二进制文件,它存储数据的方式与存储在内存中的方式相同。这样的文件是紧凑和快速阅读,但不容易编辑或阅读的人。
C标准提供了不同的函数来处理这些文件类型。fwrite和fread用于二进制文件。fprintf、fscanf、fgets等是用于文本文件的。
有几种方法可以解析您的输入,因此有很多示例。读取数据的一种廉价方法是fscanf。它忽略换行符,只是将它们视为空格。如果你有更复杂的数据或者你需要良好的错误处理,这不是一个读取输入的好方法,但是对于你的小例子来说,它就可以了。您的输入似乎没有以行的形式组织。
下面的代码定义了函数scan_int,该函数从文件中读取多个整数。main函数显示了如何使用此函数。
#include <stdlib.h>
#include <stdio.h>
/*
 *      Read at most max integers from a file and store them in arr.
 *      Return the number of integers read or -1 on file access error.
 *      Numbers may or may not be separated with commas.
 */
int scan_int(const char *fn, int arr[], int max)
{
    FILE *f = fopen(fn, "r");
    int n = 0;
    if (f == NULL) return -1;
    while (n < max && fscanf(f, "%d,", &arr[n]) == 1) n++;
    fclose(f);
    return n;
}
int main(void)
{
    int a[10];
    int i, n;
    n = scan_int("data.txt", a, 10);
    for (i = 0; i < n; i++) {
        if (i) printf(", ");
        printf("%d", a[i]);
    }
    printf("\n");
    return 0;
}https://stackoverflow.com/questions/34311148
复制相似问题