i'm coding a poker game for irc. This is a piece of the code, it prints the array of cards, and then the value of each card. The array is printed correctly, but a segment violation appears before the value of cards is printed.
Can someone help me with this? Suggestions for optimize the code are accepted too ;P
void barajar() {
srand(time(NULL));
for(i = 0 ; i < 52 ; i++) {
cartas[i] = i;
}
for(i = 0 ; i < 100 ; i++) {
int i1 = rand()%52;
int i2 = rand()%52;
int tmp = cartas[i1];
cartas[i1] = cartas[i2];
cartas[i2] = tmp;
}
for(i = 0 ; i < 51 ; i++) {
printf("%d, ", cartas[i]);
}
i++;
printf("%d.\n", cartas[i]);
}
int main() {
barajar();
int olol;
for ( olol = 0; olol <=52; olol++ ) {
int numero = cartas[c];
int cnum = numero % 13;
int numero1;
switch(cnum) {
case 0:
nombre1 = "As";
break;
case 10:
nombre1 = "J";
break;
case 11:
nombre1 = "Q";
break;
case 12:
nombre1 = "K";
break;
default:
numero1 = cnum + 1;
break;
}
int opera = numero / 13;
switch ( opera ) {
case 0:
nombre2 = "diamantes";
case 1:
nombre2 = "diamantes";
case 2:
nombre2 = "corazones";
case 3:
nombre2 = "picas";
case 4:
nombre2 = "espadas";
}
if (nombre1 != "\0") {
strcat(carta, nombre1);
strcat(carta, " de ");
strcat(carta, nombre2);
printf("%s", carta);
}
else {
sprintf(carta, "%s", numero1);
strcat(carta, " de ");
strcat(carta, nombre2);
printf("%s", carta);
}
c++;
}
}