2016-06-23 7 views
0

Ich möchte in der Lage sein, den Benutzer fragen, welche Spalte er aus der Eingabedatei drucken möchte. Die Eingabedatei ist eine Standard-Textdatei, die vier Spalten hat (wie durch den Code in den globalen Variablen beschrieben), die durch Leerzeichen getrennt sind (was ich verwende, um jede Zeile in der getline-Funktion zu trennen.)Wie Benutzerschnittstelle zu meinem einfachen C-Code hinzufügen

Vielen Dank.

#include <stdio.h> 
#include <string.h> 
#define LINE_SIZE 256 
#define COL_NUM 3 

int main() 
{ 
    char line[LINE_SIZE]; 
    char *ptr; 
    int column; 
    FILE * fp = fopen("input.txt", "r"); 

    while(!feof(fp)){     // if not the end of file 
     fgets(line, sizeof(line), fp); // get one line each time 
     ptr = strtok(line, " ");   // split line by space 
     column = 1;      // starting column is one 
     while(ptr != NULL)    // if the line is not finished 
     { 
      if(column == COL_NUM){ 
       printf("%s\n", ptr);  // print what we got 
       ptr = strtok(NULL, " "); // and keep splitting 
      } 
      ptr = strtok(NULL, " ");  // and keep splitting 
      column++; 
     } 
    } 
    fclose(fp); 
    return 0; 
} 
+4

finden Sie unter [Warum „während (! Feof (Datei))“ ist immer falsch?] (Http://stackoverflow.com/q/5431941/2173917) –

+1

vorausgesetzt, Sie sind glücklich Konsole zu verwenden, ich Ich schlage vor, Sie lesen sich Dinge wie printf() getchar() scanf() usw. Ich würde Tutorialpoint empfehlen – Orangesandlemons

Antwort

0

Zuerst müssen Sie Benutzer zur Eingabe der Spaltennummer fragen, nach, dass Sie th Prüfung benötigen, wenn die Eingangsnummer zwischen 1 und 4 ist, und dann die Zeile drucken, die Sie ausgewählt haben.

int input = 0; 
int i = 0; 

printf("Select a column number!\n"); 
scanf("%d", &input); 

if (input>0 && input <5) 
{ 
    for (i=1; i<5; i++) 
    { 
     fgets(line, sizeof(line), fp); 
     if (input == i) 
      printf("The column is %s\n", line); 
    } 

} 
Verwandte Themen