繁体   English   中英

用C,整数和字符加载

[英]Loading in C, integers and characters

我在加载此文件时遇到问题。

第一个数字是后续序列中将有多少个字符/数字。 我不知道/不知道如何弄清楚这些是数字还是字符。

这是我的代码:

文本文件是:

3
001
100    



 int main(int argc, char** argv)

{
    int  *array =0;
    array = LoadConfig(argv[1]);
    return 0;
}

int* LoadConfig(char * Filename)
{
    FILE* fptr = fopen(Filename, "r");
    int n=0; //number of rows
    int poles=0;
    int i=0; //for loop index
    int scanreturn; //error check
    scanreturn = fscanf(fptr, "%d", &n); // n will be the number of rows
    poles = n*n - n;
    int *array  =malloc(sizeof(int)*(poles));
    for(i=0;i<poles;i++)
    {
        scanreturn = fscanf(fptr, "%d", &array[i]);
        if (scanreturn !=1)
        {
            printf("danger\n");
        }
        printf("%d: %d\n",i, array[i]);
    }
    printf("%d is n  %d is poles\n",n, poles);
    return array;
}


the output is :0: 1
               1: 100
               danger
               2: 0
               danger
               3: 0
               danger
               4: 0
               danger
               5: 0
               3 is n  6 is poles

我猜那些是字符而不是整数吗?

1)确保正确的原型制作。 从...开始

#include <stdio.h>
#include <stdlib.h>
int* LoadConfig(char * Filename);

2)仅读取1位数而不是无限位数-这是您的主要问题

// scanreturn = fscanf(fptr, "%d", &array[i]);
scanreturn = fscanf(fptr, "%1d", &array[i]);

3)次要:建议,因为它更易于维护,更像calloc()

// int *array  =malloc(sizeof(int)*(poles));
int *array = malloc(poles * sizeof *array);

4)完成后,请确保在调用例程中释放array

free(array);
return 0;

5)检查fscanf()结果

scanreturn = fscanf(fptr, "%d", &n);
if (scanreturn != 1) Oops();

6)在fscanf()推荐fgets()/sscanf() or strtox() fscanf()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM