[C++]likwidacja przerw w tekście

0

Napisałem taką prostą funkcję do likwidowania przerw między znacznikami HTML. Zauważyłem że w zwolnione miejsce do tablicy text, tekst zaczyna wpisywać się od początku, tak jakby zmienna "p" się zerowała i inkremetowała od początku. Problem rozwiązałem (zakomentowany if w drugim for) ale tak na dobrą sprawę nie wiem czemu tak się działo i nie daje mi to spokoju ;-P

void spacebars_removing(char* text, int rozmiar)
{
  unsigned int* tab_int=new unsigned int[rozmiar];
   
  for(int i=0;i<rozmiar;i++){tab_int[i]=static_cast<unsigned int>(text[i]);}
   
  int* tab_int2=new int[rozmiar];
    
  int p=0;  
  for(int i=0;i<rozmiar;i++)  
  { 
    if(tab_int[p]==13)
      {
        while(tab_int[p]!=60)
        {
          p++;
        }
      }        
    tab_int2[i]=tab_int[p];
    p++;
    //if(p>rozmiar){tab_int2[i]=0;}   
  }
  
    for(int i=0;i<rozmiar;i++)
      {             
        text[i]=static_cast<char>(tab_int2[i]);   
      }  
}

Do razu wyjaśnię że operował na tab_int2 bo przy wczytywaniu plików kodowanych UTF8 program wykrzaczał się przy uruchamianiu, w sumie też nie wiem dlaczego. Wrzucam pliki na których testowałem:
http://wrzucacz.pl/file/6341258226632

0

Ale przekobinowałeś, mam spore kłopoty co miałes na myśli, szczególnie, że nie wiadomo po co tworzysz te dziwne tablice.
Chyba jednak załapałem o co ci chodzi: chcesz usunąć spacje wiodące na początku każdego wiersza. W takim wypadku to ma wyglądać tak

void removeLeadingSpacesAndEmptyLines(char* text)
{
     char *p = text;
     for(;*text; ++text) {
          if(*text == '\n') {
              *p++ = *text; // zachowaj znak końca linii
              do {
                    ++text;
              } while(*text==' ' || *text=='\t' || *text=='\n');
          }
          *p++ = *text;
     }
     *p = 0;
}
0

sadze ze autorowi chodzilo o to, co napisal w pierwszym zdaniu - usuwanie bialych znakow pomiedzy > zamykajacym tag oraz < otwierajacym kolejny tag

niemniej, Twoj kod autor powienien dac rade sobie do tego dostosowac..

ps. - nie udostepniles maila, tamtego watku nie chce ozywiac, wiec wkleje tutaj i jak przeczytasz(:) to wywale

mnie denerwuje straszna niekonsekwencja w nazywaniu metod np to wpisz, które tak naprawdę oznacza wczytaj. Czyta się to strasznie, a jak na forum jest tego dużo.

Poczatkujacy w programowaniu, maja wielgachny problem z nazywaniem metod. Czesc z nich, w ogole nie za bardzo łapie, co to jest funckja/metoda, wiec siłą rzeczy nazywanie tego dziwnego tworu jest dla nich jeszcze bardziej dziwaczne. Inna część - postrzega je jako skróty w kodzie, albo widzi je "z drugiej strony" - i na takiego tutaj trafiłes. On tę metodę nazwał z punktu widzenia _efektu_widocznego w działaniu programu. Ta metoda mówi użytkownikowi, żeby wpisał liczbę - no, to nazwiemy ją WpiszLiczbę. Jak sie na takiego typka trafi, czasem trzeba i pół godziny zużyć na wyklarowanie, czemu metody nazywa sie z punktu widzenia programu, a nie uzytkownika :)
EH
ale my tez takie problemy kiedys mielismy. przynajmniej ja pamietam ze mnie w pierwszym miesiacu programowania wiekszego niz pojedynczy int main() szalenie dziwilo, czemu wszyscy nazywaja metody jakby to oni byli programem :)

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