welch edles Stueckchen Code...

Code:
z[i]=untergrenze; 

for(i=untergrenze; i<=obergrenze; i++)
ich interpretiere mal:
setze arraywert auf was undefiniertes.
aber noch besser, erhoehre etwas undefiniertes solange bis etwas undefiniertes rauskommt.
Und dein x ist ebenfalls undefiniert.
Die undefinierten Werte sind bestenfalls 0. Das wuerde dann das Verhalten erklaeren was du siehst.



statt weiterer Primfaktorzerlegungsexperimente wuerde ich ein C Buch empfehlen.


und es gibt hier [ code] tags, nicht ohne Grund; macht keinen Spass das da oben zu lesen.

EDIT:
vermutlich suchst du sowas:
Code:
int main(void)
{
  char z[1000];
  int i = 0, j;
  int zahl1 = 0, zahl2 = 0;

  gets(z);
  while (!isdigit(z[i]))
    i++;
  while (isdigit(z[i]))
  {
    zahl1 *= 10;
    j = z[i] - 0x30;
    zahl1 += j;
    i++;
  }
  while (!isdigit(z[i]))
    i++;
  while (isdigit(z[i]))
  {
    zahl2 *= 10;
    j = z[i] - 0x30;
    zahl2 += j;
    i++;
  }
  printf("Zahl1: %d Zahl2: %d\n", zahl1, zahl2);
}
BTW: warning: the `gets' function is dangerous and should not be used.

EDIT2: es fehlt allerdings noch die abfrage ob nur eine Zahl eingegeben wurde.