getchar() and reading line by line

后端 未结 1 1978
隐瞒了意图╮
隐瞒了意图╮ 2020-12-18 14:24

For one of my exercises, we\'re required to read line by line and outputting using ONLY getchar and printf. I\'m following K&R and one of the examples shows using getcha

相关标签:
1条回答
  • 2020-12-18 15:12

    You will need more than one char to store a line. Use e.g. an array of chars, like so:

    #define MAX_LINE 256
    char line[MAX_LINE];
    int c, line_length = 0;
    
    //loop until getchar() returns eof
    //check that we don't exceed the line array , - 1 to make room
    //for the nul terminator
    while ((c = getchar()) != EOF && line_length < MAX_LINE - 1) { 
    
      line[line_length] = c;
      line_length++;
      //the above 2 lines could be combined more idiomatically as:
      // line[line_length++] = c;
    } 
     //terminate the array, so it can be used as a string
    line[line_length] = 0;
    printf("%s\n",line);
    return 0;
    

    With this, you can't read lines longer than a fixed size (255 in this case). K&R will teach you dynamically allocated memory later on that you could use to read arbitarly long lines.

    0 讨论(0)
提交回复
热议问题