Share this page

# goto

Performs an absolute jump to another point in the program. The destination point is identified by a label which is the argument for the goto instruction. A label consists of a valid identifier followed by a colon.

    gotolabel;
    ....
    label:

## Example

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 26.1 Function Reference 26.1 All View Local Help Center View Online Help Center Version: