c - C语言中只读取一行txt

标签 c ansi-c

我想读取一个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;
}

看起来没问题,但输出显示情况并非如此。

请帮我解决这个问题。

谢谢! 坎普斯。

最佳答案

您必须通过执行以下操作使 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;
    ...

关于c - C语言中只读取一行txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20665930/

相关文章:

c - C : #define ABC(a, b) {#a, a, b} 是什么意思

c - 带 char * 的 memcpy 不起作用

c++ - 这是有效的 ANSI C++ 代码吗?尝试在编译时生成结构成员的偏移量

c++ - 接受错误 : Bad file descriptor

c - 分配多少空间用于在字符串中打印 long int 值?

c - 将 double 转换为 int 时出错

string - 在 bash 的字符串中“揭示”隐藏/控制 'codes'

c - 什么占用了更多的 FLASH 空间?静态变量或全局变量

c++ - 术语平台和框架指的是什么?

C - 为什么不能正确运行?我是 C 新手