#include <stdio.h>
int dodoubleloop(size_t rows, size_t cols, int m[rows][cols],
int target, size_t *row, size_t *col) {
for (size_t i = 0; i < rows; i++) {
for (size_t j = 0; j < cols; j++) {
if (m[i][j] == target) {
*row = i;
*col = j;
return 1;
}
}
}
return 0;
}
int main(void) {
size_t n = 12, m = 42;
int matrix[n][m]; // C99 VLA
int value = 2023;
matrix[7][39] = 2023; // it's UB accessing other elements!!
size_t row, col;
for (int kk = -1; kk < 2; kk++) {
int status = dodoubleloop(n, m, matrix, value + kk, &row, &col);
if (status) {
printf("value %d found in cell (%zu, %zu)\n", value
+ kk
, row
, col
); } else {
printf("value %d not found\n", value
+ kk
); }
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgZG9kb3VibGVsb29wKHNpemVfdCByb3dzLCBzaXplX3QgY29scywgaW50IG1bcm93c11bY29sc10sCiAgICAgICAgICAgICAgICAgaW50IHRhcmdldCwgc2l6ZV90ICpyb3csIHNpemVfdCAqY29sKSB7CiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJvd3M7IGkrKykgewogICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgY29sczsgaisrKSB7CiAgICAgICAgICAgIGlmIChtW2ldW2pdID09IHRhcmdldCkgewogICAgICAgICAgICAgICAgKnJvdyA9IGk7CiAgICAgICAgICAgICAgICAqY29sID0gajsKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0KCmludCBtYWluKHZvaWQpIHsKICAgIHNpemVfdCBuID0gMTIsIG0gPSA0MjsKICAgIGludCBtYXRyaXhbbl1bbV07ICAvLyBDOTkgVkxBCiAgICBpbnQgdmFsdWUgPSAyMDIzOwoKICAgIG1hdHJpeFs3XVszOV0gPSAyMDIzOyAvLyBpdCdzIFVCIGFjY2Vzc2luZyBvdGhlciBlbGVtZW50cyEhCiAgICBzaXplX3Qgcm93LCBjb2w7CiAgICBmb3IgKGludCBrayA9IC0xOyBrayA8IDI7IGtrKyspIHsKICAgICAgICBpbnQgc3RhdHVzID0gZG9kb3VibGVsb29wKG4sIG0sIG1hdHJpeCwgdmFsdWUgKyBraywgJnJvdywgJmNvbCk7CiAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICBwcmludGYoInZhbHVlICVkIGZvdW5kIGluIGNlbGwgKCV6dSwgJXp1KVxuIiwgdmFsdWUgKyBraywgcm93LCBjb2wpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHByaW50ZigidmFsdWUgJWQgbm90IGZvdW5kXG4iLCB2YWx1ZSArIGtrKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQo=