我想在我的C程序中有点提示。如何printf用户名和主机名?在bash脚本中我使用了$ USER,但我不知道如何将它与prinf()函数连接起来。请帮忙,我在任何地方都没有找到任何帮助。
答案 0 :(得分:1)
您可以使用简单的高级:
#include <stdio.h>
#include <stdlib.h>
int main () {
char* hostname = getenv("HOST");
char* user = getenv("USER");
if(hostname == NULL) return 1; //hostname reading problem
if(user == NULL) return 2; //username reading problem
printf("I'm user %s on %s.\n", user, host);
}
但这取决于两个环境变量是否可用(并非总是如此)(例如,当您将代码用作登录shell时,当var是HOSTNAME而不是HOST时,...)。
因此...
我建议忽略变量并询问系统:
#include <stdio.h>
#include <unistd.h>
#define MAX_HOSTNAME_LENGTH 255
int main () {
char hostname[MAX_HOSTNAME_LENGTH + 1];
char* user = getlogin();
hostname[MAX_HOSTNAME_LENGTH] = 0; //null-terminate in case hostname is too long
if(gethostname(hostname, MAX_HOSTNAME_LENGTH) != 0) return 1; //hostname reading problem
if(user==NULL) return 2; //username reading problem
printf("I'm user %s on %s.\n", user, hostname);
return 0;
}