Skip to content
LAM
Read Home Blog
Make Projects HTML Tools Games
Touch grass Notes Resume Links
Home Blog HTML Projects
Tools Games Notes Resume Links
Back C Programming Cheat Sheet - CSE240 Concepts Programming
Download Open
Show description 2,014 chars · Programming

C Programming Cheat Sheet - CSE240 Concepts

C Programming Cheat Sheet - CSE240 Concepts




C Programming Cheat Sheet

CSE240 Homework 4 Concepts & Patterns


🧠 Programming Methodology


The Three-Step Process



1. INSTRUCTION
Read what the homework says to do



2. TRANSLATION
Convert requirement to C syntax



3. WHY
Understand the reasoning behind the choice






Key Insight: Instruction order ≠ Implementation order. Always think about logical flow, not comment order.





⚡ Essential Function Design Pattern



int myFunction() {
// 1. VALIDATE INPUTS FIRST
if (somethingWrong) {
return errorCode;
}

// 2. PREPARE DATA
convertInputsToProperFormats();

// 3. PERFORM MAIN OPERATION
doTheActualWork();

// 4. CLEAN UP / ORGANIZE
sortOrOrganizeResults();

// 5. REPORT SUCCESS
return successCode;
}



Remember: Always validate before doing work. Check conditions BEFORE attempting operations.





📊 Structs & Arrays of Structs


Basic Struct Syntax


struct studentRecord {
char studentName[MAX_NAME_LENGTH];
char major[MAX_NAME_LENGTH];
schoolYear schoolYear;
unsigned int studentID;
};

// Create array of structs
struct studentRecord list[MAX_STUDENTS];



Accessing Struct Elements


// Access elements using dot notation
list[i].studentName
list[i].major
list[i].schoolYear
list[i].studentID

// Copy strings into struct
strcpy(list[count].studentName, studentName_input);

// Assign direct values
list[count].studentID = studentID_input;





🔢 Enums (Enumeration Types)



typedef enum {
freshman = 0,
sophomore,
junior,
senior
} schoolYear;



String to Enum Conversion


schoolYear yearEnum;
if (strcmp(schoolYear_input, "freshman") == 0) {
yearEnum = freshman;
}
else if (strcmp(schoolYear_input, "sophomore") == 0) {
yearEnum = sophomore;
}
// ... etc



Enum to String Conversion


switch (list[i].schoolYear) {
case freshman:
printf("freshman\n");
break;
case sophomore:
printf("sophomore\n");
break;
// ...…

C Programming Cheat Sheet - CSE240 Concepts

19,177 bytes · HTML source
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>C Programming Cheat Sheet - CSE240 Concepts</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 100%);
            color: #e0e0e0;
            font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
            line-height: 1.6;
            padding: 20px;
            min-height: 100vh;
        }

        .container {
            max-width: 1200px;
            margin: 0 auto;
        }

        h1 {
            text-align: center;
            color: #ffb347;
            font-size: 2.5em;
            margin-bottom: 30px;
            text-shadow: 0 0 10px rgba(255, 179, 71, 0.3);
            border-bottom: 3px solid #444;
            padding-bottom: 15px;
        }

        h2 {
            color: #ffd700;
            font-size: 1.8em;
            margin: 30px 0 15px 0;
            border-left: 5px solid #ffb347;
            padding-left: 15px;
            background: rgba(255, 179, 71, 0.1);
            padding: 10px 15px;
            border-radius: 5px;
        }

        h3 {
            color: #ffb347;
            font-size: 1.3em;
            margin: 20px 0 10px 0;
        }

        .concept-box {
            background: rgba(40, 40, 40, 0.8);
            border: 1px solid #555;
            border-radius: 8px;
            padding: 20px;
            margin: 15px 0;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
        }

        .code-block {
            background: #1e1e1e;
            border-left: 4px solid #ffd700;
            padding: 15px;
            margin: 10px 0;
            border-radius: 0 5px 5px 0;
            overflow-x: auto;
            font-family: 'Consolas', monospace;
        }

        .highlight {
            color: #ffd700;
            font-weight: bold;
        }

        .warning {
            color: #ffb347;
            background: rgba(255, 179, 71, 0.1);
            padding: 10px;
            border-radius: 5px;
            border-left: 4px solid #ffb347;
            margin: 10px 0;
        }

        .tip {
            color: #90ee90;
            background: rgba(144, 238, 144, 0.1);
            padding: 10px;
            border-radius: 5px;
            border-left: 4px solid #90ee90;
            margin: 10px 0;
        }

        .grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 20px;
            margin: 20px 0;
        }

        .flow-step {
            background: linear-gradient(135deg, #2d2d2d 0%, #3d3d3d 100%);
            border: 2px solid #ffb347;
            border-radius: 10px;
            padding: 15px;
            text-align: center;
            position: relative;
        }

        .flow-step::after {
            content: "↓";
            color: #ffd700;
            font-size: 2em;
            position: absolute;
            bottom: -30px;
            left: 50%;
            transform: translateX(-50%);
        }

        .flow-step:last-child::after {
            display: none;
        }

        .comparison {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 15px;
            margin: 15px 0;
        }

        .good {
            background: rgba(144, 238, 144, 0.1);
            border-left: 4px solid #90ee90;
            padding: 15px;
        }

        .bad {
            background: rgba(255, 99, 71, 0.1);
            border-left: 4px solid #ff6347;
            padding: 15px;
        }

        ul {
            margin: 10px 0;
            padding-left: 20px;
        }

        li {
            margin: 5px 0;
            color: #ccc;
        }

        .syntax {
            color: #87ceeb;
        }

        .keyword {
            color: #ffd700;
        }

        .string {
            color: #98fb98;
        }

        .comment {
            color: #696969;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>C Programming Cheat Sheet</h1>
        <p style="text-align: center; color: #888; margin-bottom: 40px;">CSE240 Homework 4 Concepts & Patterns</p>

        <h2>🧠 Programming Methodology</h2>
        <div class="concept-box">
            <h3>The Three-Step Process</h3>
            <div class="grid">
                <div class="flow-step">
                    <strong class="highlight">1. INSTRUCTION</strong><br>
                    Read what the homework says to do
                </div>
                <div class="flow-step">
                    <strong class="highlight">2. TRANSLATION</strong><br>
                    Convert requirement to C syntax
                </div>
                <div class="flow-step">
                    <strong class="highlight">3. WHY</strong><br>
                    Understand the reasoning behind the choice
                </div>
            </div>
            
            <div class="warning">
                <strong>Key Insight:</strong> Instruction order ≠ Implementation order. Always think about logical flow, not comment order.
            </div>
        </div>

        <h2>⚡ Essential Function Design Pattern</h2>
        <div class="concept-box">
            <div class="code-block">
<span class="keyword">int</span> <span class="syntax">myFunction</span>() {
    <span class="comment">// 1. VALIDATE INPUTS FIRST</span>
    <span class="keyword">if</span> (somethingWrong) {
        <span class="keyword">return</span> errorCode;
    }
    
    <span class="comment">// 2. PREPARE DATA</span>
    convertInputsToProperFormats();
    
    <span class="comment">// 3. PERFORM MAIN OPERATION</span>
    doTheActualWork();
    
    <span class="comment">// 4. CLEAN UP / ORGANIZE</span>
    sortOrOrganizeResults();
    
    <span class="comment">// 5. REPORT SUCCESS</span>
    <span class="keyword">return</span> successCode;
}
            </div>
            <div class="tip">
                <strong>Remember:</strong> Always validate before doing work. Check conditions BEFORE attempting operations.
            </div>
        </div>

        <h2>📊 Structs & Arrays of Structs</h2>
        <div class="concept-box">
            <h3>Basic Struct Syntax</h3>
            <div class="code-block">
<span class="keyword">struct</span> <span class="syntax">studentRecord</span> {
    <span class="keyword">char</span> <span class="syntax">studentName</span>[MAX_NAME_LENGTH];
    <span class="keyword">char</span> <span class="syntax">major</span>[MAX_NAME_LENGTH];
    <span class="syntax">schoolYear</span> schoolYear;
    <span class="keyword">unsigned int</span> <span class="syntax">studentID</span>;
};

<span class="comment">// Create array of structs</span>
<span class="keyword">struct</span> <span class="syntax">studentRecord</span> list[MAX_STUDENTS];
            </div>

            <h3>Accessing Struct Elements</h3>
            <div class="code-block">
<span class="comment">// Access elements using dot notation</span>
list[i].studentName
list[i].major
list[i].schoolYear
list[i].studentID

<span class="comment">// Copy strings into struct</span>
<span class="syntax">strcpy</span>(list[count].studentName, studentName_input);

<span class="comment">// Assign direct values</span>
list[count].studentID = studentID_input;
            </div>
        </div>

        <h2>🔢 Enums (Enumeration Types)</h2>
        <div class="concept-box">
            <div class="code-block">
<span class="keyword">typedef enum</span> { 
    freshman = <span class="highlight">0</span>, 
    sophomore, 
    junior, 
    senior 
} <span class="syntax">schoolYear</span>;
            </div>

            <h3>String to Enum Conversion</h3>
            <div class="code-block">
<span class="syntax">schoolYear</span> yearEnum;
<span class="keyword">if</span> (<span class="syntax">strcmp</span>(schoolYear_input, <span class="string">"freshman"</span>) == <span class="highlight">0</span>) {
    yearEnum = freshman;
}
<span class="keyword">else if</span> (<span class="syntax">strcmp</span>(schoolYear_input, <span class="string">"sophomore"</span>) == <span class="highlight">0</span>) {
    yearEnum = sophomore;
}
<span class="comment">// ... etc</span>
            </div>

            <h3>Enum to String Conversion</h3>
            <div class="code-block">
<span class="keyword">switch</span> (list[i].schoolYear) {
    <span class="keyword">case</span> freshman:
        <span class="syntax">printf</span>(<span class="string">"freshman\n"</span>);
        <span class="keyword">break</span>;
    <span class="keyword">case</span> sophomore:
        <span class="syntax">printf</span>(<span class="string">"sophomore\n"</span>);
        <span class="keyword">break</span>;
    <span class="comment">// ... etc</span>
}
            </div>
        </div>

        <h2>🔤 String Operations</h2>
        <div class="concept-box">
            <div class="comparison">
                <div class="good">
                    <h4 class="highlight">✅ CORRECT</h4>
                    <div class="code-block">
<span class="comment">// Compare strings</span>
<span class="keyword">if</span> (<span class="syntax">strcmp</span>(str1, str2) == <span class="highlight">0</span>) {
    <span class="comment">// strings are equal</span>
}

<span class="comment">// Copy strings</span>
<span class="syntax">strcpy</span>(destination, source);
                    </div>
                </div>
                <div class="bad">
                    <h4 class="highlight">❌ WRONG</h4>
                    <div class="code-block">
<span class="comment">// Can't use == with strings!</span>
<span class="keyword">if</span> (str1 == str2) {
    <span class="comment">// This compares addresses!</span>
}

<span class="comment">// Can't assign strings directly!</span>
destination = source;
                    </div>
                </div>
            </div>

            <h3>strcmp() Return Values</h3>
            <ul>
                <li><span class="highlight">0</span> → strings are identical</li>
                <li><span class="highlight">&gt; 0</span> → first string comes after second alphabetically</li>
                <li><span class="highlight">&lt; 0</span> → first string comes before second alphabetically</li>
            </ul>
        </div>

        <h2>🔄 Loop Patterns</h2>
        <div class="concept-box">
            <h3>Basic Array Traversal</h3>
            <div class="code-block">
<span class="comment">// Loop through all existing elements</span>
<span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="highlight">0</span>; i &lt; count; i++) {
    <span class="comment">// Process list[i]</span>
}
            </div>

            <h3>Bubble Sort Pattern</h3>
            <div class="code-block">
<span class="comment">// Nested loops for bubble sort</span>
<span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="highlight">0</span>; i &lt; count - <span class="highlight">1</span>; i++) {
    <span class="keyword">for</span> (<span class="keyword">int</span> j = <span class="highlight">0</span>; j &lt; count - <span class="highlight">1</span> - i; j++) {
        <span class="keyword">if</span> (<span class="syntax">strcmp</span>(list[j].studentName, list[j + <span class="highlight">1</span>].studentName) &gt; <span class="highlight">0</span>) {
            <span class="comment">// Swap using temp variable</span>
            temp = list[j];
            list[j] = list[j + <span class="highlight">1</span>];
            list[j + <span class="highlight">1</span>] = temp;
        }
    }
}
            </div>

            <div class="warning">
                <strong>Why count - 1?</strong> If you have 5 elements, you only need 4 comparisons (pairs: 0-1, 1-2, 2-3, 3-4)
            </div>
        </div>

        <h2>✅ Input Validation Patterns</h2>
        <div class="concept-box">
            <h3>Essential Validation Checks</h3>
            <div class="code-block">
<span class="comment">// 1. Check if array/list is full</span>
<span class="keyword">if</span> (count &gt;= MAX_STUDENTS) {
    <span class="keyword">return</span> <span class="highlight">2</span>; <span class="comment">// or appropriate error code</span>
}

<span class="comment">// 2. Check for duplicates</span>
<span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="highlight">0</span>; i &lt; count; i++) {
    <span class="keyword">if</span> (<span class="syntax">strcmp</span>(list[i].name, newName) == <span class="highlight">0</span>) {
        <span class="keyword">return</span> <span class="highlight">0</span>; <span class="comment">// duplicate found</span>
    }
}

<span class="comment">// 3. Check if list is empty (for display functions)</span>
<span class="keyword">if</span> (count == <span class="highlight">0</span>) {
    <span class="syntax">printf</span>(<span class="string">"List is empty.\n"</span>);
    <span class="keyword">return</span>;
}
            </div>
        </div>

        <h2>📁 File I/O Patterns</h2>
        <div class="concept-box">
            <h3>Reading Files</h3>
            <div class="code-block">
<span class="keyword">FILE</span>* file;
file = <span class="syntax">fopen</span>(fileName, <span class="string">"rb"</span>); <span class="comment">// "rb" = read binary</span>

<span class="comment">// Always check if file exists!</span>
<span class="keyword">if</span> (file == <span class="highlight">NULL</span>) {
    <span class="syntax">printf</span>(<span class="string">"%s not found\n"</span>, fileName);
    <span class="keyword">return</span>;
}

<span class="comment">// Read data in same order it was saved</span>
<span class="syntax">fread</span>(&amp;count, <span class="keyword">sizeof</span>(count), <span class="highlight">1</span>, file);
<span class="syntax">fclose</span>(file);
            </div>

            <h3>Writing Files</h3>
            <div class="code-block">
<span class="keyword">FILE</span>* file;
file = <span class="syntax">fopen</span>(fileName, <span class="string">"wb"</span>); <span class="comment">// "wb" = write binary</span>

<span class="comment">// Save data in specific order</span>
<span class="syntax">fwrite</span>(&amp;count, <span class="keyword">sizeof</span>(count), <span class="highlight">1</span>, file);
<span class="syntax">fclose</span>(file);
            </div>

            <div class="tip">
                <strong>Critical:</strong> Read and write data in the EXACT same order, or your program will crash!
            </div>
        </div>

        <h2>🎯 Common Return Value Patterns</h2>
        <div class="concept-box">
            <div class="code-block">
<span class="comment">// Standard return codes for add functions</span>
<span class="keyword">return</span> <span class="highlight">0</span>; <span class="comment">// Error: item already exists</span>
<span class="keyword">return</span> <span class="highlight">1</span>; <span class="comment">// Success: item added</span>
<span class="keyword">return</span> <span class="highlight">2</span>; <span class="comment">// Error: list is full</span>
            </div>

            <h3>How Calling Functions Use Return Values</h3>
            <div class="code-block">
<span class="keyword">int</span> result = <span class="syntax">addSort</span>(name, major, year, id);
<span class="keyword">if</span> (result == <span class="highlight">0</span>)
    <span class="syntax">printf</span>(<span class="string">"Student is already on the list!\n"</span>);
<span class="keyword">else if</span> (result == <span class="highlight">1</span>)
    <span class="syntax">printf</span>(<span class="string">"Student successfully added!\n"</span>);
<span class="keyword">else</span>
    <span class="syntax">printf</span>(<span class="string">"Unable to add. List is full!\n"</span>);
            </div>
        </div>

        <h2>💡 Key Programming Insights</h2>
        <div class="concept-box">
            <ul>
                <li><span class="highlight">count</span> tracks how many items exist, also points to next empty spot</li>
                <li><span class="highlight">Arrays are zero-indexed:</span> first element is [0], last is [count-1]</li>
                <li><span class="highlight">Always validate inputs</span> before performing operations</li>
                <li><span class="highlight">String operations</span> require special functions (strcmp, strcpy)</li>
                <li><span class="highlight">Enum conversion</span> requires explicit if/else or switch statements</li>
                <li><span class="highlight">File I/O order matters:</span> read in same sequence as write</li>
                <li><span class="highlight">Struct swapping:</span> use temp variable to swap entire structs</li>
            </ul>
        </div>

        <h2>⚠️ Common Mistakes to Avoid</h2>
        <div class="concept-box">
            <div class="comparison">
                <div class="bad">
                    <h4>❌ Don't Do This</h4>
                    <ul>
                        <li>Use == to compare strings</li>
                        <li>Assign strings with = operator</li>
                        <li>Forget to check if list is full</li>
                        <li>Try to add before validating</li>
                        <li>Use count as loop limit when it can change</li>
                        <li>Forget to increment count after adding</li>
                    </ul>
                </div>
                <div class="good">
                    <h4>✅ Do This Instead</h4>
                    <ul>
                        <li>Use strcmp() for string comparison</li>
                        <li>Use strcpy() for string copying</li>
                        <li>Check count >= MAX_SIZE first</li>
                        <li>Validate all inputs before processing</li>
                        <li>Use count-1 for loop limits</li>
                        <li>Always count++ after successful add</li>
                    </ul>
                </div>
            </div>
        </div>

        <div style="text-align: center; margin-top: 40px; padding: 20px; border-top: 2px solid #444; color: #888;">
            <p>Keep this cheat sheet handy for future C programming assignments!</p>
            <p>Remember: <span class="highlight">Validate → Prepare → Process → Organize → Return</span></p>
        </div>
    </div>
</body>
</html>