Script started on Wed Oct 15 17:28:44 2025 macbook:logs> cd ../programs/C_ch12 macbook:C_ch12> macbook:C_ch12> echo code for attendance 530 code for attendance 530 macbook:C_ch12> macbook:C_ch12> cat ~/Desktop/code_examples.txt // show_PNG_image.c png_byte *my_row; int my_col; q = image->data; for (int r_index=0; r_index < height; r_index++) { if (SHOW_IMAGE_DATA) printf(" Row %d \n", r_index); my_row = row_pointers[r_index]; my_col = 0; for (int c_index=0; c_index < width; c_index++) { if (SHOW_IMAGE_DATA) printf("%x%x%x%x ", *(my_row + my_col), *(my_row + my_col + 1), *(my_row + my_col + 2), *(my_row + my_col + 3)); // Copy row data to image // Red and Blue appear to be switched from what I'd expect. *q++ = *(my_row + my_col + 2); // Red *q++ = *(my_row + my_col + 1); // Green *q++ = *(my_row + my_col ); // Blue *q++ = *(my_row + my_col + 3); // Alpha //printf("%x ", *(my_row + my_col + 3)); // Show alpha values my_col += 4; // See also XPutPixel() } if (SHOW_IMAGE_DATA) printf("\n"); } //XwindowC.c q = my_rgba_data; for (int r_index=0; r_index < height; r_index++) { for (int c_index=0; c_index < width; c_index++) { // Copy row data to image // Red and Blue appear to be switched from what I'd expect. *q++ = *(my_row + 2); // Red *q++ = *(my_row + 1); // Green *q++ = *(my_row ); // Blue if (channels > 3) *q++ = *(my_row + 3); // Alpha else *q++ = (unsigned char)255; // alpha set to max my_row += channels; // See also XPutPixel() } } macbook:C_ch12> echo "a[row][col] == a[row*MAXCOL + col] == *(p + row*NUM_COLS + col) " a[row][col] == a[row*MAXCOL + col] == *(p + row*NUM_COLS + col) macbook:C_ch12> vi bad_idea.c macbook:C_ch12> gcc bad_idea.c bad_idea.c:4:9: error: use of undeclared identifier 'NUM_ROWS' 4 | int a[NUM_ROWS][NUM_COLS]; | ^ bad_idea.c:4:19: error: use of undeclared identifier 'NUM_COLS' 4 | int a[NUM_ROWS][NUM_COLS]; | ^ bad_idea.c:8:24: error: use of undeclared identifier 'NUM_ROWS' 8 | for (row = 0; row <= NUM_ROWS; row++) | ^ bad_idea.c:9:25: error: use of undeclared identifier 'NUM_COLS' 9 | for (col = 0; col < NUM_COLS; col++) | ^ bad_idea.c:13:23: error: use of undeclared identifier 'NUM_ROWS' 13 | for (row = 0; row < NUM_ROWS; row++) { | ^ bad_idea.c:14:25: error: use of undeclared identifier 'NUM_COLS' 14 | for (col = 0; col < NUM_COLS; col++) | ^ 6 errors generated. macbook:C_ch12> vi bad_idea.c macbook:C_ch12> gcc bad_idea.c macbook:C_ch12> ./a.out 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 zsh: abort ./a.out macbook:C_ch12> macbook:C_ch12> macbook:C_ch12> macbook:C_ch12> vi bad_idea.c macbook:C_ch12> gcc bad_idea.c macbook:C_ch12> ./a.out 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 macbook:C_ch12> vi bad_idea.c macbook:C_ch12> gcc bad_idea.c macbook:C_ch12> ./a.out 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 zsh: abort ./a.out macbook:C_ch12> vi bad_idea.c macbook:C_ch12> gcc bad_idea.c macbook:C_ch12> ./a.out 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 macbook:C_ch12> cat bad_idea.c #include #define NUM_ROWS 5 #define NUM_COLS 5 int main() { int a[NUM_ROWS][NUM_COLS]; int row, col; // row should not be = to NUM_ROWS for (row = 0; row < NUM_ROWS; row++) for (col = 0; col <= NUM_COLS; col++) { if (col < NUM_COLS) a[row][col] = 0; } // print for (row = 0; row < NUM_ROWS; row++) { for (col = 0; col < NUM_COLS; col++) printf(" %d", a[row][col]); printf("\n"); } return 0; } macbook:C_ch12> cp bad_idea.c bad_idea2.c macbook:C_ch12> vi bad_idea2.c macbook:C_ch12> gcc bad_idea2.c macbook:C_ch12> ./a.out 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 zsh: abort ./a.out macbook:C_ch12> sftp snowball.cs.gsu.edu mweeks@snowball.cs.gsu.edu's password: Connected to snowball.cs.gsu.edu. sftp> put bad_idea*.c Uploading bad_idea.c to /home/mweeks/bad_idea.c bad_idea.c 100% 465 119.1KB/s 00:00 Uploading bad_idea2.c to /home/mweeks/bad_idea2.c bad_idea2.c 100% 466 113.7KB/s 00:00 sftp> quit macbook:C_ch12> snowball zsh: command not found: snowball macbook:C_ch12> ssh snowball.cs.gsu.edu mweeks@snowball.cs.gsu.edu's password: Last login: Thu Sep 18 11:46:45 2025 from c-24-99-154-26.hsd1.ga.comcast.net + | GSU Computer Science | Instructional Server | SNOWBALL.cs.gsu.edu + [mweeks@gsuad.gsu.edu@snowball ~]$ gcc bad_idea.c [mweeks@gsuad.gsu.edu@snowball ~]$ ./a.out 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 [mweeks@gsuad.gsu.edu@snowball ~]$ gcc bad_idea2.c [mweeks@gsuad.gsu.edu@snowball ~]$ ./a.out 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 [mweeks@gsuad.gsu.edu@snowball ~]$ cat bad_idea2.c #include #define NUM_ROWS 5 #define NUM_COLS 5 int main() { int a[NUM_ROWS][NUM_COLS]; int row, col; int b, c, d, e, f, g, h; // row should not be = to NUM_ROWS for (row = 0; row < NUM_ROWS; row++) for (col = 0; col <= NUM_COLS; col++) { a[row][col] = 0; } // print for (row = 0; row < NUM_ROWS; row++) { for (col = 0; col < NUM_COLS; col++) printf(" %d", a[row][col]); printf("\n"); } return 0; } [mweeks@gsuad.gsu.edu@snowball ~]$ cp bad_idea.c example_1015.c [mweeks@gsuad.gsu.edu@snowball ~]$ vi example_1015.c [mweeks@gsuad.gsu.edu@snowball ~]$ gcc example_1015.c [mweeks@gsuad.gsu.edu@snowball ~]$ ./a.out 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 [mweeks@gsuad.gsu.edu@snowball ~]$ cat example_1015.c #include #define NUM_ROWS 5 #define NUM_COLS 5 int main() { int a[NUM_ROWS][NUM_COLS]; int row, col; int *p; for (p = &a[0][0]; p < &a[NUM_ROWS-1][NUM_COLS]; p++) *p = 4; // print for (row = 0; row < NUM_ROWS; row++) { for (col = 0; col < NUM_COLS; col++) printf(" %d", a[row][col]); printf("\n"); } return 0; } [mweeks@gsuad.gsu.edu@snowball ~]$ echo "int a[]={5,15,34,54,14,2,52,72}; > int *p=&a[1], *q=&a[5];" int a[]={5,15,34,54,14,2,52,72}; int *p=&a[1], *q=&a[5]; [mweeks@gsuad.gsu.edu@snowball ~]$ echo " p points to 15, q to 2" p points to 15, q to 2 [mweeks@gsuad.gsu.edu@snowball ~]$ vi what_is_array_contents.c [mweeks@gsuad.gsu.edu@snowball ~]$ gcc what_is_array_contents.c what_is_array_contents.c: In function ‘main’: what_is_array_contents.c:4:9: error: ‘N’ undeclared (first use in this function) int a[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; ^ what_is_array_contents.c:4:9: note: each undeclared identifier is reported only once for each function it appears in [mweeks@gsuad.gsu.edu@snowball ~]$ vi what_is_array_contents.c [mweeks@gsuad.gsu.edu@snowball ~]$ gcc what_is_array_contents.c [mweeks@gsuad.gsu.edu@snowball ~]$ cat what_is_array_contents.c #include #define N 10 int main() { int a[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int *p = &a[0], *q=&a[N-1], temp; int i; while (p < q){ temp = *p; *p++ = *q; *q-- = temp; } // print array for (i = 0; i int main() { char *str = "HelloWorld"; printf("%s", *str); printf("\n"); return 0; } [mweeks@gsuad.gsu.edu@snowball ~]$ echo "that is the bad version" that is the bad version [mweeks@gsuad.gsu.edu@snowball ~]$ vi str.c [mweeks@gsuad.gsu.edu@snowball ~]$ gcc str.c [mweeks@gsuad.gsu.edu@snowball ~]$ ./a.out HelloWorld [mweeks@gsuad.gsu.edu@snowball ~]$ echo "this is the good version" this is the good version [mweeks@gsuad.gsu.edu@snowball ~]$ cat str.c #include int main() { char *str = "HelloWorld"; printf("%s", str); printf("\n"); return 0; } [mweeks@gsuad.gsu.edu@snowball ~]$ [mweeks@gsuad.gsu.edu@snowball ~]$ cp str.c str2.c [mweeks@gsuad.gsu.edu@snowball ~]$ vi str2.c [mweeks@gsuad.gsu.edu@snowball ~]$ gcc str2.c [mweeks@gsuad.gsu.edu@snowball ~]$ ./a.out HelloWorld [mweeks@gsuad.gsu.edu@snowball ~]$ cat str2.c #include int main() { char str[] = "HelloWorld"; printf("%s", str); printf("\n"); return 0; } [mweeks@gsuad.gsu.edu@snowball ~]$ cp str2.c str3.c [mweeks@gsuad.gsu.edu@snowball ~]$ vi str3.c [mweeks@gsuad.gsu.edu@snowball ~]$ gcc str3.c [mweeks@gsuad.gsu.edu@snowball ~]$ ./a.out helloWorld [mweeks@gsuad.gsu.edu@snowball ~]$ cp str3.c str3b.c [mweeks@gsuad.gsu.edu@snowball ~]$ cat str3.c #include int main() { char str[] = "HelloWorld"; str[0] = 'h'; printf("%s", str); printf("\n"); return 0; } [mweeks@gsuad.gsu.edu@snowball ~]$ vi str3b.c [mweeks@gsuad.gsu.edu@snowball ~]$ gcc str3b.c [mweeks@gsuad.gsu.edu@snowball ~]$ ./a.out Segmentation fault (core dumped) [mweeks@gsuad.gsu.edu@snowball ~]$ cat str3b.c #include int main() { char *str = "HelloWorld"; str[0] = 'h'; printf("%s", str); printf("\n"); return 0; } [mweeks@gsuad.gsu.edu@snowball ~]$ diff str3.c str3b.c 4c4 < char str[] = "HelloWorld"; --- > char *str = "HelloWorld"; [mweeks@gsuad.gsu.edu@snowball ~]$ exit logout Connection to snowball.cs.gsu.edu closed. macbook:C_ch12> exit Saving session... ...copying shared history... ...saving history...truncating history files... ...completed. Script done on Wed Oct 15 18:45:10 2025