c - 无法从文件中读取,并在我的程序中使用文件中的数据

标签 c io

在这个程序中,我有一个名为“accounts.dat”的文件,在这个文件中有一些数据行,例如

1000:first
2000:second
3000:third

但是当我尝试在我的程序中将数据值 fscanf 到我的数组中时,我得到:

0:$ s·°Ïÿ¿
1:t·¨BuÞZ·
-1217025816:s·0s·É¥s·hp[·4£s·

作为扫描的值,或者至少这是它所显示的。

我扫描值的函数是:

void read (int accounts[MAX], char debcred[MAX], double amount[MAX], char accname[][MAXSTRING], char transname[][MAXSTRING], int *i) {

FILE *fp1 = NULL;
//FILE *fp2 = NULL;

fp1 = fopen("accounts.dat", "r");
//fp2 = fopen("transactions.dat", "r");

int h = 0;



if (fp1 != NULL) // READING THE FILE
{
    while(fscanf(fp1, "%d", &accounts[h]) != EOF)
    {

            fgetc(fp1);
            fscanf(fp1, "%30[^\n]", &accname[h]);
            h++;

            printf("%d:%s\n", accounts[h], accname[h]);

    }

    fclose(fp1);
}
else
    printf ("Failed to open file\n");

}

我在 main 中调用读取函数的方式是:

read(accounts, debcred, amount, accname, transname, &i);

我在 main 函数中的声明是:

int accounts[MAX], accounts2[MAX], account;
char debcred[MAX], accname[MAX][MAXSTRING], transname[MAX][MAXSTRING];
double amount[MAX];

任何人都可以弄清楚我的问题是什么吗?为什么我的文件中的数据行没有被正确扫描到程序中的数组中?

最佳答案

fscanf(fp1, "%30[^\n]", &accname[h]);
h++;
printf("%d:%s\n", accounts[h], accname[h]);

尝试在 打印后增加 h

关于c - 无法从文件中读取,并在我的程序中使用文件中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13732404/

相关文章:

c - 静态动态内存是否会在程序结束时自动释放?

io - 过滤掉断管错误

java - 无法从抽象类读取文件

C++指针解释

C编程中malloc的使用及赋值

c - 如果语句丢失(在函数 main 中。无法通过此错误

c - int a=65; 如何实现? printf ("%c",a);在 GCC 中使用 C 语言工作?

java - 如何通过 Servlet 的 doPost() 方法在 Tomcat 服务器上创建文件?

基于 Web 的 CSV 导出的 Java IO 异常

C - 使用 mmap 时出现总线错误