Вы сделали if (*string = x)
, который назначит символ (значение) x
в местоположение, указанное string
, и если x
не равно 0
, то это if
будет всегда истинным.Вы хотели сравнить значение x
и первый символ string
, что делается с помощью if (*string == x)
.Это позволит сравнить значения.
Чтобы избежать таких ошибок / опечаток, в таких случаях вы можете определить char *
как константу, чтобы запретить случайное изменение значений, которые вы не хотите изменять.Например, в этом случае вы можете определить свою функцию следующим образом:
char * strsrch(const char * string, char x);
Это помешает вам присвоить значение x
в строку во время компиляции.
Также вы можете использовать более высокий уровень предупреждения с вашим компилятором.Например, при включении gcc
-Wall
вы получите предупреждение о назначении .
.