Mismatch between format specifiers (%d, %s, %p) and supplied argument types in printf/scanf.
Occurs when format specifiers in `printf()` or `scanf()` do not match the binary data types of the variables passed into the function.
Passing a string to `%d`, or passing a non-pointer variable to `scanf()` instead of passing variable address `&var`.
1#include <stdio.h>2 3int main() {4 int age = 25;5 // Bug 1: Format mismatch (%s expects char*, passed int)6 printf("Age: %s\n", age); 7 8 // Bug 2: Missing & in scanf9 int input;10 scanf("%d", input); // Crash: passing int value instead of address &input!11 return 0;12}1#include <stdio.h>2 3int main() {4 int age = 25;5 printf("Age: %d\n", age); // Correct: %d for int6 7 int input;8 if (scanf("%d", &input) == 1) { // Correct: pass address &input9 printf("Read: %d\n", input);10 }11 return 0;12}Simulate standard system builds to trigger compiler trace records and track memory crashes locally.
`printf` expects a memory address string pointer for `%s`. Passing integer value `25` makes printf attempt to dereference memory address 0x19, triggering a segfault.