我想讀取一個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