對於課堂中的作業,我們的任務是使用read()
函數來讀取包含數字的文件。雖然我能夠將數字讀入緩衝區,但我無法將它們從緩衝區移動到char *數組中,以便輕鬆訪問和排序它們。任何建議表示讚賞。使用read()系統調用
int readNumbers(int hexI, int MAX_FILENAME_LEN, int **array, char* fname) {
int numberRead = 0, cap = 2;
*array = (int *)malloc(cap*sizeof(int));
int n;
int filedesc = open(fname, O_RDONLY, 0);
if(filedesc < 0){
printf("%s: %s\n", "COULD NOT OPEN", fname);
return -1;
}
char * buff = malloc(512);
buff[511] = '\0';
while(n = read(filedesc, buff+totaln, 512 - totaln) > 0) //Appears to loop only once
totaln += n;
int len = strlen(buff);
for (int a = 0; a < len; a++) { //Dynamically allocates array according to input size
if ((&buff[a] != " ") && (&buff[a] != '\n'))
numberRead++;
if (numberRead >= cap){
cap = cap*2;
*array = (int*)realloc(*array, cap*sizeof(int));
}
}
int k = 0;
while((int *)&buff[k]){ //attempts to assign contents of buff to array
array[k] = (int *)&buff[k];
k++;
}
}
爲什麼要將讀取的數據寫入char * buff [512]而不是單個char * buff = malloc(MAX_FILENAME_LEN)? – igon 2014-11-03 21:39:44
buff是持有文件的內容,而不是文件名。但是,我確實將char * buff [512]更改爲char * buff = malloc(512)。 512被教授推薦。 – CSjunkie 2014-11-04 00:06:42