Array of null-terminated char strings

I have an array of six character strings (not Strings), and want to print them out. This doesn't work:

const int samples = 6;
const int datasize = 17;
int x, y;

char data[samples][datasize+1] = { 
  "11110000001011000",
  "00110000001011000",
  "11110000100100101",
  "00110000100100101",
  "11110000100100110",
  "00110000100100110"
};

  void setup() {
    delay(2000);
    Serial.begin(9600);

    Serial.println();
    for (x = 0; x < samples; x++); {
      for (y = 0; y < datasize; y++) {
        Serial.print(data[x][y]);
      }
      Serial.println();
    }
  }
  
  void loop() {
  }

I get seven non-printable characters. Can anyone suggest how to make this work on a Nano? It's funny because I can extract each character with no problem by treating this as a normal two-dimentional array. I just can't get them to print out to look just like the input.

for (x = 0; x < samples; x++); {
                             ^

Thanks very much. You just look at it over and over again, but never see what's wrong.

Sometimes the answer is to take a break and come back fresh.

There's no need for the inner loop that cycles through character-by-character. The Serial object can do that for you:

const size_t datasize = 17;

char data[][datasize + 1] = {
  "11110000001011000",
  "00110000001011000",
  "11110000100100101",
  "00110000100100101",
  "11110000100100110",
  "00110000100100110"
};

constexpr size_t samples {sizeof(data) / sizeof(data[0])};

void setup() {
  Serial.begin(115200);
  delay(1000);

  Serial.println();
  for (size_t x = 0; x < samples; x++) {
    Serial.println(data[x]);
  }
}

void loop() {
}

Or, even easier since the compiler knows the array's size:

const size_t datasize = 17;

char data[][datasize + 1] = {
  "11110000001011000",
  "00110000001011000",
  "11110000100100101",
  "00110000100100101",
  "11110000100100110",
  "00110000100100110"
};

void setup() {
  Serial.begin(115200);
  delay(1000);

  Serial.println();
  for (auto ptr: data) {
    Serial.println(ptr);
  }
}

void loop() {
}

Or because the strings seems to be static , Just keep a pointer to those…

const char *data[] = {
  "11110000001011000",
  "00110000001011000",
  "11110000100100101",
  "00110000100100101",
  "11110000100100110",
  "00110000100100110"
};

void setup() {
  Serial.begin(115200);
  Serial.println();
  for (const char * ptr: data) Serial.println(ptr);
}

void loop() {}