gpt4 book ai didi

c - 如何使用 char var 字符串连接和调用系统

转载 作者:行者123 更新时间:2023-12-01 14:02:22 25 4
gpt4 key购买 nike

我正在尝试连接字符串并在我的服务器上调用 expext 脚本,但我是 .net 程序员并且是 c 和指针的新手,所以一直搞砸......我在这里做错了什么?

或者更好的问题是我应该怎么做?

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

int main(int argc, char *argv[])
{
//location of expect script that ssh and gets info on other server
char str0[] = "./home/systemio/Develop/getfile ";

char* strP = argv[1];
char str1 = (char)*strP;
char str2[] = " > file.txt";

strcat(str0,str1);

strcat(str0,str2);

printf("%s\n", str0);
system(str0);

printf("Done!!!!\n");
return 0;
}

最佳答案

这一行将不起作用:

strcat(str0,str1);

那是因为str1不是字符串!它是单个 char。字符串只能是字符指针或字符数组。

正如其他人所指出的,str0 不够大,因此您将覆盖内存,这将导致未定义的行为

如果我可以为您尝试做的事情提供替代解决方案:

char str[100];

sprintf(str, "./home/systemio/Develop/getfile %c > file.txt", argv[1][0]);
printf("%s\n", str);
system(str);

编辑: 解释我为什么使用 argv[1][0]

原因是因为问题中的这两行:

char* strP =  argv[1];
char str1 = (char)*strP;

这两行以间接方式从argv[1] 获取第一个字符。如果您想要整个 argv[1],那么我的 sprintf 将如下所示:

sprintf(str, "./home/systemio/Develop/getfile %s > file.txt", argv[1]);

关于c - 如何使用 char var 字符串连接和调用系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9019308/

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