在C中只读取一行txt

时间:2013-12-18 18:42:09

标签: c ansi

我想读取一个txt文件的第一行并将其保存到hexArray。

该行包含32个字符,表示十六进制数。

我有以下代码:

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

char *saveToArray(FILE *hexFile);

int main(int argc, char* argv)
{
    char ch;
    FILE *hexFile = fopen("hex.txt", "rb"); //recebido pela consola
    char *hexArray = saveToArray(hexFile);
    for(int i = 0 ; i < 32; i++)
    {       
        printf("%c", hexArray[i]);
    }
    printf("\n%d", sizeof hexArray);

    ch = getchar();
    return 0;
}

char *saveToArray(FILE *hexFile)
//metodo que devolve uma array contendo uma linha do ficheiro
{
    char hexArray[32];
    fgets(hexArray, sizeof hexArray, hexFile);  
    return hexArray;
}

似乎没问题,但输出结果显示不是。

请帮我解决这个问题。

谢谢! Cumps。

1 个答案:

答案 0 :(得分:1)

您必须这样做hexArray static

char *saveToArray(FILE *hexFile)
//metodo que devolve uma array contendo uma linha do ficheiro
{ 
    static char hexArray[32];
    fgets(hexArray, sizeof hexArray, hexFile);  
    return hexArray;
}

或者,通过这样做:

char hexArray[32];
int main(int argc, char* argv)
{
    char ch;
    ...