### Question 8.2

I'm checking a string to see if it matches a particular value. Why isn't this code working?

    	char *string;
    	...
    	if(string == "value") {
    		/* string matches "value" */
    		...
    	}

Strings in C are represented as arrays of characters, and C never manipulates (assigns, compares, etc.) arrays as a whole. The `==` operator in the code fragment above compares two pointers--the value of the pointer variable `string` and a pointer to the string literal `"value"`--to see if they are equal, that is, if they point to the same place. They probably don't, so the comparison never succeeds.

To compare two strings, you generally use the library function `strcmp`:

    	if(strcmp(string, "value") == 0) {
    		/* string matches "value" */
    		...
    	}

Read sequentially: prev next up top

This page by Steve Summit // Copyright 1995 // mail feedback