Dzielenie tekstu

0

Mam pod pewna zmienna ciag znakow (napis1). Wszystko działa piknie jezeli w stringu sa 2 znaki "|" wtedy string zostanie podzielony na 3 czesci, ale jak juz wystepuje tylko jeden albo w ogóle to mam blad:( I nie mam juz pomysla jak to poprawic. Zamieszczam kod ponizej moze ktos pomoze jak to zrobic zeby program dzialal dobrze. Tzn. jezeli sa 2 znaki "|" w stringu to ma go podzielic na 3 czesci. Jezeli wystepuje jeden znak na 2 czesci. I jezeli nie ma znaku"|" w stringu ma go nie dzielic. prosze o pomoc

#include <iostream.h>
#include <string.h>

int main()
{
int a;
char *napis1;
//napis1="Kasia|Asia|Basia";
napis1="Kasia|Asia";

	 char *p1, *p2=napis1;
	 char buf_lin[32];
	 while(p1=strchr(p2,'|'))       
	 {                                
		 strncpy(buf_lin,p2,p1-p2); 
		 buf_lin[p1-p2]=0;
		 p2=p1+1;
	 }

	 char *ile, *p3=napis1;
	 ile=strchr(p3,'|');

	 char lin1[20];
	 strncpy(lin1,p3,ile-p3);
	 lin1[ile-p3]=0;

cout<<'\n'<<lin1;
cout<<'\n'<<buf_lin;
cout<<'\n'<<p2;
cin>>a;
}

0
user napisał(a)

Wszystko działa piknie jezeli w stringu sa 2 znaki "|" wtedy string zostanie podzielony na 3 czesci, ale jak juz wystepuje tylko jeden albo ort! to mam blad :(

Działa ci przy dwóch znakach | bo tak sobie to zaprogramowałeś ;) Z resztą nie podałeś jaki rodzaj błędu powoduje ta twoja procedura ale podejrzewam, że chodzi o dwie Kasie :P

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