我想读取一个txt文件的第一行并将其保存为hexArray。只读c中的一行txt
该行包含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。
你怎么在输出中看到了什么? 你期望在输出中看到什么? –
当'saveToArray'退出时,您将返回自动变量'hexArray'的地址,并且通过稍后解除引用该地址来调用*未定义行为*。 – WhozCraig
问题:“char hexArray []”有效*仅用于* saveToArray()函数。问:你知道字符串需要以“null”结尾,对吗?因此,如果在“fgets()”输入中有一个换行符,则最多只能读取31个字符 - 可能更少。问题:您*必须*确保字符串属性终止。 – paulsm4