РЕДАКТИРОВАТЬ для включения предложений по кодированию и обновлению вопроса
Мне нужно реализовать функцию переноса слов в программе, и я выбрал жадный алгоритм
//I use fread to take in the file in one bite, the parse the resulting array. The
//four lines below are from another function.
char *readBuffer= (char *) malloc(sizeof(char) * fileSize);
int size= ftell(fp);
rewind(fp);
size_t result= fread(readBuffer, 1, size, fp);
int spaceLeft= termWidth;
int outputLines=0, tempLength, printCount-0;
char *temp, *newLine="\n";
temp= strtok(readBuffer, " "),
fputs(temp, stdout); //prints out a 11, when should be a 1, then exits
while ((outputLines < termHeight) && (temp != NULL)){
strcat(temp, " ");
tempLength= strlen(temp);
if (spaceLeft > tempLength){
fputs(temp, stdout);
spaceLeft -= tempLength+1;
} else {
strcat(newLine, temp);
spaceLeft= termWidth-(tempLength);
outputLines++;
newLines="\n";
}
temp= strtok(NULL, " ");
printCount+= tempLength //debugger display
}
}
С помощью этого кода я проверил, что файл правильно прочитан в readBuffer командой fputs(readBuffer, stdout)
.Тем не менее, первые fputs записывают на экран 11, когда это должно быть 1. Затем он пропускает цикл while и выходит.
OutputLines установлен в 0, а termHeight является результатом termHeight=termios.ws_row-1
call.
Если temp выводит значение на экран и (outputLines = 0)> termHeight, как в этом случае значение temp может быть нулевым?