Bird
Raised Fist0
Cprogramming~5 mins

Using errno in C - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is errno in C programming?
errno is a global variable set by system calls and some library functions in C to indicate what error occurred during the last operation.
Click to reveal answer
beginner
How do you include errno in your C program?
You include the header <errno.h> which declares errno and error codes.
Click to reveal answer
intermediate
Why should you set errno to 0 before a function call?
Setting errno to 0 before a function call helps to check if the function actually changed errno to indicate an error.
Click to reveal answer
beginner
What function can you use to get a human-readable string for the current errno value?
You can use strerror(errno) to get a readable error message describing the error.
Click to reveal answer
intermediate
Is errno reset to 0 automatically after a successful function call?
No, errno is not reset automatically. It keeps its value until changed by a function that sets it.
Click to reveal answer
Which header file must you include to use errno in C?
A&lt;errno.h&gt;
B&lt;stdio.h&gt;
C&lt;stdlib.h&gt;
D&lt;string.h&gt;
What type of variable is errno?
AStatic double variable
BLocal float variable
CPointer to char
DGlobal integer variable
What does strerror(errno) return?
AThe numeric value of <code>errno</code>
BThe last function's return value
CA string describing the error code stored in <code>errno</code>
DThe current system time
Why should you set errno = 0 before calling a function that might fail?
ATo clear the function's return value
BTo detect if the function changed <code>errno</code> indicating an error
CTo reset the program counter
DTo initialize a local variable
If a function succeeds, what happens to errno?
AIt remains unchanged
BIt resets to 0 automatically
CIt becomes -1
DIt is set to the function's return value
Explain how to use errno to detect errors after calling a system function in C.
Think about the steps to safely check errors using errno.
You got /6 concepts.
    Describe why errno is useful and how it differs from a function's return value.
    Consider the difference between error signaling and error details.
    You got /5 concepts.

      Practice

      (1/5)
      1. What is the primary purpose of errno in C programming?
      easy
      A. To store error codes set by system or library functions when they fail
      B. To count the number of errors in a program
      C. To reset the program state after an error
      D. To display error messages automatically

      Solution

      1. Step 1: Understand what errno stores

        errno is a global variable that stores error codes set by system or library functions when they fail.
      2. Step 2: Differentiate from other options

        It does not count errors, reset program state, or display messages automatically.
      3. Final Answer:

        To store error codes set by system or library functions when they fail -> Option A
      4. Quick Check:

        errno stores error codes = C [OK]
      Hint: Remember: errno holds error codes after failure [OK]
      Common Mistakes:
      • Thinking errno counts errors
      • Assuming errno resets program state
      • Believing errno prints messages automatically
      2. Which of the following is the correct way to include errno in a C program?
      easy
      A. #include
      B. #include
      C. #include
      D. #include

      Solution

      1. Step 1: Identify the standard header for errno

        The standard header file to use errno is <errno.h>.
      2. Step 2: Verify other options

        <error.h>, <err.h>, and <errors.h> are not standard headers for errno.
      3. Final Answer:

        #include <errno.h> -> Option B
      4. Quick Check:

        errno header = <errno.h> [OK]
      Hint: Use #include to access errno [OK]
      Common Mistakes:
      • Using wrong header files
      • Forgetting to include errno.h
      • Confusing with similar-sounding headers
      3. What will the following C code print if the file nonexistent.txt does not exist?
      #include <stdio.h>
      #include <errno.h>
      #include <string.h>
      
      int main() {
          FILE *f = fopen("nonexistent.txt", "r");
          if (!f) {
              printf("Error: %s\n", strerror(errno));
          }
          return 0;
      }
      medium
      A. Error: No such file or directory
      B. Error: Permission denied
      C. Error: File exists
      D. Error: Unknown error

      Solution

      1. Step 1: Understand fopen failure and errno

        When fopen fails to open a non-existing file for reading, it sets errno to indicate the error, usually ENOENT meaning "No such file or directory".
      2. Step 2: Use strerror to get error message

        strerror(errno) converts the error code to a readable string, which will be "No such file or directory".
      3. Final Answer:

        Error: No such file or directory -> Option A
      4. Quick Check:

        fopen missing file error = "No such file or directory" [OK]
      Hint: fopen missing file sets errno to ENOENT message [OK]
      Common Mistakes:
      • Assuming errno is zero without checking fopen result
      • Confusing error messages for different errors
      • Not including string.h for strerror
      4. Identify the error in this code snippet that uses errno:
      #include <stdio.h>
      #include <errno.h>
      #include <string.h>
      
      int main() {
          errno = 0;
          FILE *f = fopen("file.txt", "r");
          if (f == NULL) {
              perror("File open error");
          }
          if (errno != 0) {
              printf("Error code: %d\n", errno);
          }
          return 0;
      }
      medium
      A. Using perror instead of strerror is incorrect
      B. Setting errno to 0 before fopen is unnecessary
      C. Checking errno after fopen without checking fopen result first
      D. Not closing the file pointer after fopen

      Solution

      1. Step 1: Analyze errno usage after fopen

        errno should only be checked if the function indicates failure. Here, errno is checked regardless of fopen result, which can be misleading.
      2. Step 2: Confirm correct error checking pattern

        The correct pattern is to check if fopen returned NULL before reading errno. This code checks errno even if fopen succeeded.
      3. Final Answer:

        Checking errno after fopen without checking fopen result first -> Option C
      4. Quick Check:

        Check function result before errno [OK]
      Hint: Always check function result before reading errno [OK]
      Common Mistakes:
      • Reading errno without function failure
      • Confusing perror and strerror usage
      • Ignoring file close after fopen
      5. You want to open a file for reading and print a custom error message if it fails. Which code snippet correctly uses errno and strerror to do this?
      A) FILE *f = fopen("data.txt", "r");
         if (!f) {
             printf("Error: %s\n", strerror(errno));
         }
      
      B) errno = 0;
         FILE *f = fopen("data.txt", "r");
         if (f == NULL) {
             printf("Error: %s\n", strerror(errno));
         }
      
      C) FILE *f = fopen("data.txt", "r");
         if (f == NULL) {
             errno = 0;
             printf("Error: %s\n", strerror(errno));
         }
      
      D) FILE *f = fopen("data.txt", "r");
         if (f == NULL) {
             perror("Error opening file");
         }
      
      hard
      A. Option A
      B. Option B
      C. Option C
      D. Option D

      Solution

      1. Step 1: Check correct error handling with errno

        Option D uses perror, which is the standard and simplest way to print a custom error message along with the error string corresponding to errno. It automatically handles errno correctly.
      2. Step 2: Identify issues in other options

        Option D does not reset errno before fopen, which is less safe. Option D resets errno before fopen and checks failure, but it's generally unnecessary to reset errno before calls that set it on failure. Option D resets errno after failure, clearing the error code before printing, which is incorrect.
      3. Final Answer:

        Option D -> Option D
      4. Quick Check:

        Use perror for simple and correct error messages [OK]
      Hint: Use perror for automatic error message printing [OK]
      Common Mistakes:
      • Resetting errno unnecessarily
      • Resetting errno after failure
      • Using strerror without valid errno
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard