Re: Help with code

From: Marcelus Trojahn (mtrojahn@lagosnet.com.br)
Date: 11/25/02


Prezado Circle,

Monday, November 25, 2002, 12:30:53 PM, voce escreveu:

> Prezado Circle,

> Monday, November 25, 2002, 12:10:01 PM, voce escreveu:

>> When you initialize a string this way, the data is constant, and therefore
>> cannot be modified.  You could try something like this instead:

>> char chmap[5][10];  /* 5 rows, 10 columns */
>> strcpy(chmap[0], "-----\r\n");

>> Then later you can do this:
>> strcpy(chmap[0], "-A-A-\r\n");
>> or
>> chmap[0][1] = 'A';

> Yeah..   I  tryed  this  but  there's a problem... I need something like
> "char *blabla[]" 'cause its size is variable...

> The  first char is only a template. After I need to alter its characters
> and  add more... So, the size of each line can change and I cant declare
> it like a char blabla[size][size]...

After a war against C I solved this doing the following:

------------------
char *map_repl(char *c, size_t pos, int chr) {
  char buf[8000];
  size_t i;

  for (i=0; i<strlen(c); i++) {
    if (i==pos)
      buf[i] = chr;
    else
      buf[i] = c[i];
  }
  buf[i]='\0';
  c = buf;
  return c;
}

int main() {
  char *map[] = {
    "-----\r\n",
    "-----\r\n",
    "-----\r\n"
  };

  map[0] = map_repl(map[0],2,'a');
  printf("%s",map[0]);
  return 0;
}
---------------------

Thanks for the help! :D

--
Marcelus Trojahn
trojahn@lagosnet.com.br
Suporte Técnico de Internet

http://www.lagosnet.com.br - lagosnet@lagosnet.com.br

--
   +---------------------------------------------------------------+
   | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
   | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
   | Newbie List:  http://groups.yahoo.com/group/circle-newbies/   |
   +---------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 06/25/03 PDT