#include<stdio.h>
#include<string.h>
int main()
{
char str1[100],str2[100];
printf("请输入第一个字符串\n");
gets(str1);
printf("请输入第二个字符串\n");
gets(str2);
char *p1=str1,*p2=str2;
p1=str1,p2=str2;
for(p1=str1;*p1='\0';p1++){}//str1最后一位
while(*p2!='\0'){
*p1=*p2;
p1++,p2++;
}
*p1='\0';
printf("连接后的字符串为\n");
puts(str1);
int len,i;
len=strlen(str1);
printf("逆序排序结果为\n");
for(i=len-1;i>=0;i--){
printf("%c",str1[i]);
}
return 0;
}
for(p1=str1;*p1='\0';p1++){} //str1最后一位
循环条件改成 *p1 != '\0' 即可
用strcat
strcat(str1, str2);
根本原因:环境变量可以被子进程继承下去(而bash的是从环境变量从系统中读取来的,而系统又是从配置文件中读取的)
我们在命令行上面启动的进程(子进程),父进程都是我们的bash!(命令行解释器) ,启动方式调用fork函数。export实际上是把本地变量导给了父进程bash!
证明:
我们先设置一个本地变量:my_env_string="AAAAA"
通过它来查看
#include<stdio.h>
#include<stdlib.h>
int main()
{
printf("my_env_string: %s\n",getenv("my_env_string"));
return 0;
}
我们通过在命令行上敲击指令(子进程),确实可以查看到我们人为导入后的环境变量,但是我们的export是导给bash进程的(父进程),原来运行程序失败,现在导入后(意思就是现在父进程多了一个环境变量),再次敲击命令(子进程),结果成功,这就说明了我们的子进程继承到了我们父进程bash的环境变量 ,这就是环境变量具有全局属性!
总结:环境变量可以被继承,就是说可以影响整个“用户”系统!
所以我们在用一些gdb、gcc命令时,不用带那么多选项就能执行,本质就是从bash那里继承了环境变量。
谢谢观看!