Ich versuche in der Verfassung als Textdatei von der Kommandozeile in mein Programm zu lesen, um die Zeilen in umgekehrter Reihenfolge auszudrucken. Meine for-Schleife sieht wie folgt aus:Zeilen aus einer Textdatei in umgekehrter Reihenfolge drucken
for(int i = 0; i >= 0; i--) {
if(strings[i] == '\0') //counts through array until it finds a line break
{
break;
}
printf("%s", strings[i]);
}
Wenn das Programm läuft, das einzige, was die erste Zeile der Verfassung druckt ist. Wenn ich meine for-Schleife modifiziere, um i zu inkrementieren, läuft das Programm glatt und gibt die Konstitution wie normal aus, und deshalb glaube ich, dass mein gesamtes Problem in dieser for-Schleife zusammengefasst wird. Dies ist der Rest meines Programms als Referenz.
int clearBuffer() {
char junk;
while((junk = getchar()) != feof(stdin) && junk != '\n');
return 0;
}
int getAline(char ** bufferPointer, int * sizePointer){
char * buffer = *bufferPointer;
int count = 0;
int size = *sizePointer;
while(!feof(stdin)){
if(count >= size - 1){
char * tempBuffer = (char *)malloc(size * 10);
//strcpy(tempBuffer, buffer);
for (int i = 0; i < size; i++){
tempBuffer[i] = buffer[i];
//putchar(tempBuffer[i]);
}
free(buffer);
buffer = tempBuffer;
size *= 10;
}
buffer[count] = getchar();
if(buffer[count] == '\n'){
break;
}
if(buffer[count] == EOF){
buffer[count] = '\0';
break;
}
count++;
}
*bufferPointer = buffer;
*sizePointer = size;
return count-1;
}
int main(){
char * buffer;
char * strings[1000];
int arrayCount =0;
int size = 10;
while(!feof(stdin))
{
buffer= (char*) malloc(size);
getAline(&buffer, &size);
strings[arrayCount++] = buffer;
}
for(int i = 0; i >= 0; i--) {
if(strings[i] == '\0'){
break;
}
printf("%s", strings[i]);
}
return 0;
}
'für (int i = 0; i> = 0; i--) {' nur einmal. Start Formular letzte Nummer. – BLUEPIXY
http://stackoverflow.com/questions/5431941/why-is-which-feof-file-always-wrong –
'EOF' ist kein Zeichen. – melpomene