小编Bar*_*an 的帖子

setenv在c编程中的用法?

#include <stdio h>
#include <stdlib.h>

int main(int argc, char *argv[], char *envp[])
{
    int i = 0;
    while (envp[i] != NULL)
    {
        if (strstr(envp[i], "SHLVL") != NULL)
            printf("%s\n", envp[i]);
        i++;
    }
  
    setenv("SHLVL", "stackoverflow", 2);
    i = 0;
    while (envp[i] != NULL)
    {
        if (strstr(envp[i], "SHLVL") != NULL)
            printf("%s\n", envp[i]);
        i++;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这段代码中SHLVL是一个现有的环境变量。当我尝试使用它更改该变量的值时,setenv它会给出预期的输出。

SHLVL=1
SHLVL=stackoverflow
Run Code Online (Sandbox Code Playgroud)

在另一种情况下:具有不存在的环境变量的相同代码

int main(int argc, char *argv[], char *envp[])
{
    int i = 0;
    while (envp[i] != NULL)
    {
        if …
Run Code Online (Sandbox Code Playgroud)

c setenv

5
推荐指数
1
解决办法
118
查看次数

C中指向数组的指针的内存分配?

#include <stdio.h>
int main()
{
 int (*ptr) [5];
 printf ("%lu\n" , sizeof (ptr));
 printf ("%lu\n" , sizeof (*ptr));
}
Run Code Online (Sandbox Code Playgroud)

我使用的是64位系统。当我在 gcc 编译器中运行此代码时,它会生成输出8 and 20。我的问题是为此分配多少字节pointer to an array?是 8 或 20,为什么?

c arrays printf sizeof pointer-to-array

3
推荐指数
1
解决办法
206
查看次数

printf中'\n'和'\r'之间有什么关系?

#include<stdio.h>
int main()
{
printf ("Hello\r");
}
Run Code Online (Sandbox Code Playgroud)

在 gcc 编译器中,执行此代码时不会打印任何内容。如果我添加\n到 printf 语句中,例如

printf ("Hello\r\n");
Run Code Online (Sandbox Code Playgroud)

它打印Hello。为什么它会这样?输出缓冲区发生了什么?

c printf

2
推荐指数
1
解决办法
118
查看次数

为什么在通过非常量指针变量更改常量静态变量时出现分段错误?

#include <stdio.h>

int main() {
    // case 1
    const int a = 10;
    int * ptr1 = &a;
    *ptr1 = 11;
    printf("%d\n",*ptr1);
    
    // case 2
    const static int b = 10;
    static int * ptr2 = &b;
    *ptr2 = 11;
    printf("%d\n",*ptr2);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在这个程序中我可以理解情况1(通过将const变量的地址分配给非常量指针,我们可以改变变量值)。如果我将相同的概念应用于案例 2,我将无法工作。它给出了分段错误。是什么原因 ?case2 还有其他概念吗?这里我使用gcc编译器。

c static constants

2
推荐指数
1
解决办法
112
查看次数

标签 统计

c ×4

printf ×2

arrays ×1

constants ×1

pointer-to-array ×1

setenv ×1

sizeof ×1

static ×1