Когда я компилирую ваш код и смотрю на предупреждения, я вижу:
warning: passing argument 2 of ‘strchr’ makes integer from pointer without a cast [-Wint-conversion]
Итак, компилятор говорит мне, что ваш код неверен! Поиск strchr
(например, http://man7.org/linux/man-pages/man3/strchr.3.html), Я вижу, что strchr
ожидает, что вторым аргументом будет символ для поиска. Но ваш код передает строку (или, точнее, указатель на первый символstring):
if (strchr(line, "&") != NULL) {
^^^
ups
Попробуйте вместо этого
if (strchr(line, '&') != NULL) {
Из справочной страницы я также вижу, что strchr
возвращает указатель на символ, если он найден. Поэтому он можетимеет смысл написать код вроде:
char* pHit = strchr(line, '&');
if (pHit != NULL) {
*pHit = '\0'; // Terminate string at first &
}
, чтобы &
не был последним символом.
Простая тестовая программа может быть:
int main()
{
char line[] = "hello & world";
printf("Before: %s\n", line);
char* pHit = strchr(line, '&');
if (pHit != NULL) {
*pHit = '\0';
}
printf("After: %s\n", line);
return 0;
}
Выход:
Before: hello & world
After: hello