[英]Reading in data from a file into an array
如果我有這樣的選項文件:
size = 4
data = 1100010100110010
我想要將2d size * size數組填充到數據中,最好的方法是什么?
澄清一下,對於這個例子,我想要一個這樣的數組:
int [4] [4]數組= {{1,1,0,0},{0,1,0,1},{0,0,1,1},{0,0,1,0}} 。 (不是真正的代碼,但是您可以理解)。
大小實際上可以是任何數字。
我在想我必須讀取大小,對數組進行錯誤處理,然后也許讀入一個充滿數據的字符串,然后遍歷數據中的每個字符,將其轉換為int並將其粘貼在適當的索引中? 但是我真的不知道該怎么做,一直在尋找一會兒沒有運氣。
任何幫助都將很酷! :)
循環。
FILE *fp = fopen("waaa.txt", "r");
if(fp == null) { /* bleh */ return; }
int j = 0;
while(char ch = fgetc(fp)) {
for(int i = 0; i < 4; ++i) {
array[j][i] = ch;
}
++j;
}
我不確定fgetc()的語法。只需檢查一下即可。 它一次讀取一個字符。
int process_file(int **array, char const *file_name)
{
int size = 0;
FILE *file = fopen(file_name, "rt");
if(fp == null)
return -1;//can't open file
char line[1024]; //1024 just for example
if(fgets(line, 1024, file) != 0)
{
if(strncmp(line, "size = ", 7) != 0)
{
fcloes(file);
return -2; //incorrect format
}
size = atoi(line + 7);
array = new int * [size];
for(int i = 0; i < size; ++i)
array[i] = new int [size];
}
else
{
fclose(file);
return -2;//incorrect format
}
if(fgets(line, 1024, file) != 0)
{
if(strncmp(line, "data = ", 7) != 0)
{
fcloes(file);
for(int i = 0; i < size; ++i)
delete [] array[i];
delete [] array;
return -2; //incorrect format
}
for(int i = 7; line[i] != '\n' || line[i] != '\0'; ++i)
array[(i - 7) / size][(i - 7) % size] = line[i] - '0';
}
else
{
fclose(file);
for(int i = 0; i < size; ++i)
delete [] array[i];
delete [] array;
return -2; //incorrect format
}
return 0;
}
程序結束前不要忘記刪除數組;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.