У меня проблема в том, что я получаю ошибку сегментации, когда пытаюсь printf
выдать getenv
.
Я собираюсь научиться обращаться с библиотекой функций среды.
Я не вижу никакой ошибки в коде, и я полностью разочарован.
Вот мой код:
extern char **environ;
char c;
int main(int argc, char **argv)
{
char *input2 = malloc(sizeof(char)*20);
char *s = malloc(sizeof(char)*20);
if(input2==NULL||s==NULL)printf("malloc failed");
printf("---------------------\n"
"Environment-List Menu\n"
"---------------------\n\n"
"[1]: Print environment list\n"
"[2]: Print environment entry (getenv)\n"
"[3]: Add environment entry (putenv)\n"
"[4]: Modify environment entry (setenv)\n"
"[5]: Remove environment entry (unsetenv)\n"
"[0]: End\n\n");
while(1)
{
char a, temp2;
a=getchar();
int input = atoi(&a);
switch(input)
{
case 1:
while(*environ) puts(*environ++);
break;
case 2:
printf("Please enter the entry you're looking for and press enter:\n");
while((temp2=getchar()!=EOF))
{
printf("beginning loop\n");
printf("%s\n",input2);
printf("end of loop\n");
}
printf("after loop\n");
s = getenv(input2);
printf("getenv was called");
printf("%c\n",*s);
break;
case 3:
case 4:
case 5:
case 0:
return EXIT_SUCCESS;
default:
break;
}
}
return 0;
}