Я делаю программу, и в этой программе у меня есть два процесса: сервер и клиент. Сервер должен читать строку из ввода, а затем записывать в файл FIFO. Клиент должен читать строки из файла FIFO и затем записывать в .txt-файл. Это только функция, отвечающая за сервер и клиент. Файл FIFO и fork'ing выполняет основную функцию.Как писать и читать более одного слова в строке C
void server(void)
{
FILE *fp1, *fp2;
char string[100];
while(1)
{
fp1 = fopen("FIFO1", "w");
fprintf(stdout, "Type string: ");
scanf("%s", string);
fputs(string, fp1);
fclose(fp1);
sleep(1);
}
}
void client(void)
{
FILE *fp,*fp1;
char string[100];
while(1)
{
fp = fopen("FIFO1", "r");
fgets(string, 100, fp);
fclose(fp);
fp1 = fopen("file.txt", "a");
fprintf(fp1,"%d_file: I get: %s\n", getpid(), string);
fclose(fp1);
}
}
И моя проблема, когда я ввести строку типа «переполнение стека», когда у меня есть два слова, в моем file.txt
я добраться до линии:
8965_file: I get: stack
8965_file: I get: overflow
Есть ли способ, чтобы написать это в одной строке? Как это:
8965_file: I get: stack overflow
'Оферты()' добавляет символ новой строки, 'fputs()' не делает. –
Я изменяю «% s» на «% 99 [^ \ n]», и у меня появилось странное поведение, потому что программа записывает на экран несколько раз, что я не могу сосчитать, «Введите строку:» и в файле она пишется несколько раз », 8965_file: Я получаю: переполнение стека », а затем заканчивается :(любые идеи, почему? –