Разница между read () и fgets () в C

Я хочу читать из потока stdin. Есть ли разница в использовании read () или fgets () для чтения из потока stdin.

Я прикрепляю следующие два фрагмента кода с помощью fgets и read. С помощью fgets я могу использовать java-программу, чтобы легко писать и читать из программы c. При чтении и записи моя java-программа зависает в ожидании вывода из программы C.

Я просто читаю строку, сохраняю ее в buf и добавляю к ней A.

Программа на Java может взаимодействовать со следующей программой, которая работает с функциями fgets и Put.

#include <stdio.h>
#include <string.h>
#define SIZE  200000
main()
{
int rc;
int df;
int i;
char buf[SIZE];
for(i=0;i<=120000;i++) {
      memset(buf,'\0',SIZE);
      if(!fgets(buf,SIZE-1,stdin))
        continue;
      strcat(buf,"A_A_A_A_A_A_A");
      puts(buf);
}

}

но не с read () и write ()

main()
{
int rc;
int df;
int i;
char buf[32768];
rc = fcntl(fileno(stdin), F_SETFL, O_NONBLOCK);
//rc = fcntl(fileno(stdout), F_SETFL, O_NONBLOCK);
FILE *fp;
for (;;) 
{
    int rc=-1;
    memset(buf,'\0',32768);
    //rc = fread(buf,5, 1, stdin);
    rc = read(fileno(stdin),buf,32768); 
    if (rc > 0)
    {
        strcat(buf,"B_B_B_B_B_B_B_B_B");
        write(fileno(stdout),buf,strlen(buf));

    }
}

}

Кто-нибудь может сказать причину. Мне все еще трудно понять

9
задан Lance Roberts 3 June 2011 в 00:07
поделиться