我正在尝试连接字符串并在我的服务器上调用 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/