char i strcat

0

Mamy taki kod:

  if(floA<10)
  {
    char charZnak ;
    charZnak = floA  ;
    strcat (charOutput,charZnak);

  }
  if(floA>9)
  {
    char charZnak ;
    charZnak = floA+ 55  ;
    strcat (charOutput,charZnak);

  }

Chcę aby w momencie gdy floA < 10 do charOutput była dodawana wartosc calkowita z floA np 7.
A gdy floA>9 do charOutput był dodawany kod ASCII tego znaku zwiększony o 55 (np gdy floA=10 to "A" bo 10+55=65).
Napisałem to co widać powyzej ale to nawet nie chce się skompilowac (w BCB).
Pojawia się też błąd "cannot convert 'int' to 'const char'"
Programuje od niedawna i takie rzeczy nie są dla mnie zbyt proste, dlatego dzięki za wszelką pomoc.

0

Moze o to Ci chodzilo:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define ROZM 50

void main(void)
{
  char napis[ROZM + 1] = {0};
  int i;
  char znak;

  randomize();
  for (i = 0; i < ROZM; i++)
  {
    znak = rand() % 36;
    napis[strlen(napis)] = (znak < 10) ? znak + '0' : znak + 55;
    printf("%d, ", znak);
  }
  printf("\n%s\n", napis);
  system("pause");
}
0

foflik to nie o to mi chodzi niestety.

0

Strcat działa dla wskazników do chara (char*), nie dla charów... Ja też nie wiem , o co Ci chodzi, vo troche mętnie to wszystko opisałes.

Jesli masz na mysli dodawanie do ciągu znaków to charoutput musi być...

  
char charOutput[twoj rozmiar + 1 na 0];

// albo:

char* charOutput=(char*)malloc(ilosc znakow+1 na konczace 0); 
  // to zwalniasz free(charOutput)/realloc(charOutput,0)

// lub:
char* charOutput=new char[ile+1 (na 0)]; 
  // zwalniasz delete charOutput

  char charZnak[2] ;
  charZnak[0]=floA +55*(floA>9); // uproścmy to;
  charZnak[1]=0;     // lub inaczej '\0' <- zero musi konczyc ciag znakow
  strcat (charOutput,charZnak); // wtedy zadziała

  //albo bez strcat() ale ze strlen() 
  //(Ja bym to wybrał, ale tak na prawdę na jedno wychodzi)

  int i=strlen(charOutput);
  charOutput[i++]=floA+55*(floA>9);
  charOutput[i]=0;

Jesli zas chcesz dodawac wartosci (liczby)...

char charOutput;
charOutput+=(floA+55*(floA>9));

// ups sorki foflik za powtorke... nie przeczytałem twojego postu

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