Piszę w rozpaczy. Chyba nikt mi już nie pomoże ale spróbować nie zaszkodzi. Piszę prosty parser w czystym c który parsuje pewien plik i wyniki wyrzuca na wyjście które z kolei jest czytane przez program napisany w C#. Program w c uruchamiany jest z poziomu C# przez:
p = new System.Diagnostics.Process();
p.StartInfo.FileName = "c:\...";
i później piszę w c przez printf i używam co chwilę fflush. Natomiast to wszystko czytam w C# przez
p.StandardOutput.ReadLine();
Czasem też chcę pisać w C# a czytać w C ale do tego jeszcze nie doszedłem.
W każdym razie w pewnym momencie przesył siada. Tzn znalazłem w programie funkcję na której to wszystko się zatrzymuje. Jest tam taka pętla w przybliżeniu:
void foo(int start, int stop)
{
for(i = start; i <= stop; i++)
{
printf(...):
fflush(std...
}
}
Te pare linijek jest w funkcji która jest wywoływana w main, start i stop to parametry wynoszące 0 i 2 w tym przypadku. Po wywołaniu tej funkcji, program w C# otrzymuje dziwny token tak jakby pusty i dalej nie może pracować. Natomiast co bardzo dla mnie dziwne jeżeli tą linijkę :
for(i = start; i <= stop; i++)
zastąpię taką:
for(i = 0; i <= 2; i++)
Czyli podstawie za zmienne te same wartości które one faktycznie mają przy tym wywołaniu to wszystko działa poprawnie, napis zostaje wysłany tak jak trzeba, ja jestem w kropce, szukam i szukam ale przyczyny znaleźć nie mogę. Rozpacz. Pomóżcie co tutaj może być źle.
Jest tu coś z tymi parametrami, ponieważ jeżeli dam takie coś:
void foo(int start, int stop)
{
int sto = stop;
int sta = start;
for(i = sta; i <= sto; i++)
{
printf(...):
fflush(std...
}
}
to też działa ale nie mogę tak zmienić każdej pętli bo mam tutaj sporo zagnieżdzonych różnych wynalazków.