Uzupełnianie tablicy

0

Oto mój kod :

#include <stdio.h>

#include <stdlib.h>

#define FIFO_FILE "MYFIFO"

int main(int argc, char *argv[])

{

	
	printf("\n AKTYWNY KLIENT\n \n ");

	FILE *fp;
	char x[80];
	int i=0;
	int zm;
	
while(i != 10){
             scanf("%c",&zm);
             x[i]= zm;
             i++;
             
            if(zm == '\r' )
             {
             	i = 10;
             }	
}
	printf("\n %s Zawartosc tablicy \n",x); 


	

	if((fp = fopen(FIFO_FILE, "w")) == NULL)

	{

	perror("fopen");

	exit(1);

	}

	

	

	fputs(x, fp);

	fclose(fp);
	

	return(0);

}

 

Chce przekazywać ciąg znaków do momentu natrafienia na enter. Po wciśnieciu tego klawisza oczekuje wyjścia z pętli, a efekt programu jest taki:
wpisuje np. "12345-enter" jednak zostaje w pętli i program czeka aż dodam kolejne 5 znaków wiec wpisuje cokolwiek"qwert" enter i dopiero teraz wyjde z pętli. Pocieszające jest to że watrośc przekazana w fputs jest poprawna. Probowalem robić to samo na for'ach ale rezulatat taki sam.
jakby kogoś interesował cały projekt w którym też oczekuje pomocy :) to : http://4programmers.net/Forum/C_i_C++/203521-lacza_nazwane_fifo

0

if(zm == '\n')

0

Identyczny efekt

0

Zamiast i=10 lepiej jest skorzystać z break, ale nie sądzę, aby mogło być to przyczyną błędu.
Tak w ogóle, najlepiej podejrzyj debuggerem wartości zmiennych i stepuj kod.

1 użytkowników online, w tym zalogowanych: 0, gości: 1