gpt4 book ai didi

c - 文件写入; SSH_AGENT_PID=2547?

转载 作者:行者123 更新时间:2023-11-30 14:27:15 25 4
gpt4 key购买 nike

我是初学者,我正在尝试编写一些有关文件操作的示例。当我使用代码在文件上写入时,我会在编写的内容之后收到一些额外的文本。

SSH_AGENT_PID=2547 

请告诉我这意味着什么以及如何避免这种情况?提前致谢。

这是我的代码

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

int main(int argc, char *argv[])
{
int i;
FILE *fp;

fp = fopen(argv[1], "w");
for(i = 0; i < argc; i ++)
{
fprintf(fp, argv[i + 2]);
fprintf(fp, " ");
}
fclose(fp);

return 0;
}

这是我在命令行中可以看到的内容

[root@localhost basicC]# cc file_create_write.c
[root@localhost basicC]# ./a.out /root/kernel_programming/basicC/test_file.txt ajish alfred in focuz infotech
[root@localhost basicC]# cat test_file.txt
ajish alfred in focuz infotech SSH_AGENT_PID=2547 [root@localhost basicC]#

最佳答案

有些系统实际上有 three argument main其中第三个参数保存环境变量。您正在运行 argv 的末尾(正如 Igor Oks 所说)并进入环境变量列表;如果您查看环境变量,您应该会看到 SSH_AGENT_PID 的值为 2547(或其他数字)。

你的循环应该看起来更像这样:

for(i = 2; i < argc; i++)
fprintf(fp, "%s ", argv[i]);

您不关心 argv[0] 并且您已经使用 argv[1] 作为文件名,因此您希望从 argv 开始[2] 不将 2 加到 i 上。

我还更改了您的 fprintf 调用以使用显式格式字符串。如果你不这样做,argv[i] 中的任何内容都将被解释为格式字符串,如果 argv[i] 包含,你会发生奇怪的事情百分号。

此外,看起来您正在以 root 身份登录时学习 C 编程。这是个坏主意。一个非常非常糟糕的主意。更糟糕的想法是以 root 身份登录时执行正常任务。您应该以普通用户身份登录,这样您就不会意外删除 /dev 或其他内容。

关于c - 文件写入; SSH_AGENT_PID=2547?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8046932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com