Už to zase zesložiťuješ. Tvůj hlavní problém je ten, že neumíš algoritmizovat, tj. rozložit si logicky úkol na jednodušší části a slovně popsat přesný postup řešení problému. A "vo tom to je", tohle je naprosto nezbytný základ každého programátora!
Myslím tím třeba tohle:
- nastavím počitadlo sloupců na 1
- načtu znak ze souboru (opakuji, dokud není přečten znak EOF)
- je načten konec řádku?
- - pokud ano, vypíšu na výstup znak oddělovače a nastavím počitadlo sloupců na 1
- je načten znak oddělovače sloupců?
- - pokud ano, zvětším počitadlo sloupců o 1
- odpovídá počitadlo sloupců zadanému sloupci?
- - pokud ano, vypíšu načtený znak
- jdu zpět na načtení dalšího znaku
Znak pro oddělovač sloupců si v předchozím programu buď pevně zadáš nebo vypíšeš na obrazovku požadavek, ať jej zadá uživatel a znak pro oddělovač odtud načteš.
Ve výstupu (což má být výpis sloupce) tak budou vypsány všechny prvky daného sloupce, oddělené stejným oddělovačem, jako ve vstupním souboru.
Samozřejmě to jde i jinak - třeba přes ten buffer, nebo přes dvourozměrné pole, nebo dalšími dvaceti pěti způsoby, ale vyšel jsem z toho, co ses pokusil naprogramovat.
Zápis do Céčka už dokáže z toho popisu vyrobit každá lépe vycvičená opice:
cols = 1;
while((znak=getchar()) != EOF)
{
if(znak == '\n')
{
printf("%c",oddelovac);
cols = 1;
}
if(znak == oddelovac)
{
cols++;
}
if(cols == zadanysloupec)
{
printf("%c",znak);
}
printf("\n");
}