fork(1) download
  1. #include <stdio.h>
  2. #define BUFF_SIZE 1024
  3.  
  4. /*
  5.   改行は無視してそのまま読込を行うfgetsもどき。
  6.   引数や戻り値はfgetsと同じ。
  7.   改行文字は'\r'と'\n'の両方が対象。
  8. */
  9. char *fgets_without_nl(char *str, int size, FILE *stream);
  10.  
  11. int main(void) {
  12. char buff[BUFF_SIZE];
  13. fgets_without_nl(buff, BUFF_SIZE, stdin);
  14. printf("%s\n", buff);
  15. return 0;
  16. }
  17.  
  18. char *fgets_without_nl(char *str, int size, FILE *stream) {
  19. int c;
  20. char *b_str;
  21. char *e_str;
  22. b_str = str;
  23. e_str = str + size - 1;
  24. clearerr(stream);
  25. while ((c = getc(stream)) != EOF) {
  26. if (c != '\r' && c != '\n') {
  27. *str++ = c;
  28. if (str == e_str) {
  29. break;
  30. }
  31. }
  32.  
  33. }
  34. *str = '\0';
  35. if (str == b_str || ferror(stream)) {
  36. return NULL;
  37. } else {
  38. return b_str;
  39. }
  40. }
  41.  
Success #stdin #stdout 0s 2164KB
stdin
GGGGG
CCCCC
AAAAA
TTTTT
stdout
GGGGGCCCCCAAAAATTTTT