Share this page

# Example: goto

The following example, for Windows platforms, opens a file and reads it into a buffer. If file errors occur during the process, goto escapes the enclosing loop to code which prints an error message and exits the function.

To ensure the goto statement is executed, make sure the file c:\xyzpqi.txt does not exist. This causes fopen to return NULL and invoke the goto statement. To see the jump clearly, step through the program in VuGen by pressing the F10 key.

    #include <stdio.h>
        int count, total = 0;
        char buffer[1000];
        FILE* file_stream;
        char * filename = "c:\\xyzpqi.txt";

        // Open the file with read access

        if ((file_stream = fopen(filename, "r")) == NULL)
            goto file_error;

        // Read until end of file

        while (!feof(file_stream)) {

       // Read 1000 bytes while maintaining a running count

            count = fread(buffer, sizeof(char), 1000, file_stream);
            lr_output_message ("%3d read", count);

       // Check for file I/O errors

            if (ferror(file_stream))
                goto file_error;

      // add up actual bytes read
            total += count;
        }

      // Display final total

        lr_output_message ("Total number of bytes read = %d", total);

     // Close the file stream

        if (!fclose(file_stream))
            return 0;
            file_error:
            lr_error_message ("Error in file %s", filename);

    Example:
                    Output:
    Action.c(35): Error -17999 : Error in file c:\xyzpqi.txt

Tips to improve your search results... VuGen Function Reference Version 25.1-25.3 Function Reference 25.1-25.3 All View Local Help Center View Online Help Center Version: