Ĺadny brzuch
Witam!
Napisalem taki algorytm na łaczenie poszczególnych wierszy w tablicy.
Cos jednak nie gra ponieważ, kopiuje się tylko pierwsza litera a reszta to jakies smieci.
Prosze o wskazanie błedu i ewentualne poprawki.
#include<stdio.h> #include<string.h> #include<conio.h> #include<stdlib.h> #include<iostream.h> char *dodaj(char *wsk); void polacz( char *wsk1, char *wsk2 ); main() { char *tab[MAX]; int x,y,i=0; int x,y,z,t=0; printf("Wprowadz linie nr:"); scanf("%d",&i); tab[i]=dodaj(tab[i]); printf(" Bedziemy laczyc wiersz (zrodlo) : "); scanf("%d",&z); printf("Z wierszem (cel) : "); scanf("%d",&t); polacz(tab[z],tab[t]); return 0; } //--------laczy wiersze---------------- void polacz(char *wsk1, char *wsk2) // wsk2 ->cel { for(int i=0; i< strlen(wsk1);i++) { (*(wsk2+strlen(wsk2)+i))=(*(wsk1+i)); } (*(wsk2+strlen(wsk2)+strlen(wsk1) ) )=0; } //--------dodaje wiersz-------- char *dodaj(char *wsk) { wsk=new char[80]; printf("Podaj tekst: "); flushall(); gets(wsk); if(!wsk) { printf("brak pamieci"); } return wsk; }
Użytkownik Crisu edytował ten post 27 listopad 2005, 12:17
no to przed rozpoczęciem pracy nad tablicą wyczyść ją
tablica na wejsciu jest zerowana..nie umieszczałem tutaj całego kodu programu bo byłby za długi.
Sprawdź to :Pchar* strcon(char*a,char*b) { char* bf = new char[512]; int x = strlen(a); for (int i=0; i<x; i++) bf[i] = a[i]; for (int i=0; i<strlen(a); i++) bf[x+i] = b[i]; bf[x+strlen(b)] = 0; return bf; }
Jeśli chcesz mieć "czystą" tablicę: zadeklaruj ją na początku jako static.
np.: static char tab [256];
Jeśli chcesz mieć "czystą" tablicę: zadeklaruj ją na początku jako static.
np.: static char tab [256];
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Napisalem taki algorytm na łaczenie poszczególnych wierszy w tablicy.
Cos jednak nie gra ponieważ, kopiuje się tylko pierwsza litera a reszta to jakies smieci.
Prosze o wskazanie błedu i ewentualne poprawki.
#include<stdio.h> #include<string.h> #include<conio.h> #include<stdlib.h> #include<iostream.h> char *dodaj(char *wsk); void polacz( char *wsk1, char *wsk2 ); main() { char *tab[MAX]; int x,y,i=0; int x,y,z,t=0; printf("Wprowadz linie nr:"); scanf("%d",&i); tab[i]=dodaj(tab[i]); printf(" Bedziemy laczyc wiersz (zrodlo) : "); scanf("%d",&z); printf("Z wierszem (cel) : "); scanf("%d",&t); polacz(tab[z],tab[t]); return 0; } //--------laczy wiersze---------------- void polacz(char *wsk1, char *wsk2) // wsk2 ->cel { for(int i=0; i< strlen(wsk1);i++) { (*(wsk2+strlen(wsk2)+i))=(*(wsk1+i)); } (*(wsk2+strlen(wsk2)+strlen(wsk1) ) )=0; } //--------dodaje wiersz-------- char *dodaj(char *wsk) { wsk=new char[80]; printf("Podaj tekst: "); flushall(); gets(wsk); if(!wsk) { printf("brak pamieci"); } return wsk; }
Użytkownik Crisu edytował ten post 27 listopad 2005, 12:17
no to przed rozpoczęciem pracy nad tablicą wyczyść ją
tablica na wejsciu jest zerowana..nie umieszczałem tutaj całego kodu programu bo byłby za długi.
Sprawdź to :Pchar* strcon(char*a,char*b) { char* bf = new char[512]; int x = strlen(a); for (int i=0; i<x; i++) bf[i] = a[i]; for (int i=0; i<strlen(a); i++) bf[x+i] = b[i]; bf[x+strlen(b)] = 0; return bf; }
Jeśli chcesz mieć "czystą" tablicę: zadeklaruj ją na początku jako static.
np.: static char tab [256];
Jeśli chcesz mieć "czystą" tablicę: zadeklaruj ją na początku jako static.
np.: static char tab [256];
