Break не останавливает цикл - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! У меня возникла такая проблема - в этом коде break не хочет выходить из цикла, если ему попадается строка "}". Перед if я для самопроверки поставил printf, чтобы убедиться, что именно эта строка ему попадает. Скриншот прилагаю. В чем проблема то?
#include<stdio.h>
#include<stdlib.h>
extern char**environ;
void main(int argc, char**argv){
 
int i=0;
char* name="MYENV";
const char* var = "HOME{;PATH;LANG;USER;}";
setenv(name, var,0);
char *var2 = getenv(name);
printf("Variable of env MYENV: %s\n",var2);
 
char*temp = strtok(var2,"{");
printf("%s = %s\n",temp, getenv(temp));
while(temp){
temp=strtok(NULL,";");
if(temp =="}")
  break;
printf("%s = %s\n", temp, getenv(temp));
}

}

Решение задачи: «Break не останавливает цикл»

textual
Листинг программы
[user@localhost C]$ ./a.out
Variable of env MYENV: HOME{;PATH;LANG;USER;}
HOME = /home/user
PATH = /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/lib/mpich/bin:/home/user/.local/bin:/home/user/bin:/usr/lib/mpich/bin
LANG = ru_RU.UTF-8
USER = user
[user@localhost C]$

Объяснение кода листинга программы

В представленном коде выполняется следующее:

  1. Создаются переменные окружения MYENV и HOME со значениями /home/user и /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/lib/mpich/bin:/home/user/.local/bin:/home/user/bin:/usr/lib/mpich/bin.
  2. Создаются переменные окружения PATH, LANG и USER со значениями /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/lib/mpich/bin:/home/user/.local/bin:/home/user/bin:/usr/lib/mpich/bin, ru_RU.UTF-8 и user.
  3. Выполняется команда echo с аргументами Variable of env MYENV: HOME{;PATH;LANG;USER;}, которая выводит строку Variable of env MYENV: HOME{;PATH;LANG;USER;}.
  4. Завершается выполнение кода.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5