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

标签 c concatenation

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

相关文章:

MYSQL_ROW 和 row[0] 转字符串类型?

c++ - 我可以在多线程情况下使用不带锁的char变量吗

客户端服务器程序 C Windows - 库冲突

php - 使用 PHP 从 MySQL 获取大量数据创建 PDF 文件

c - 我怎样才能与 C 预处理器连接两次并扩展一个宏,如 "arg ## _ ## MACRO"?

python - 从 Python 调用 C DLL 函数时出错

c - 在 C 中具有前向声明的 typedef 结构

ffmpeg - 使用 FFmpeg concat 过滤器而不是协议(protocol),不同的结果

javascript - 在 JavaScript 中连接十六进制字节和字符串,同时保留字节

linux - 连接错误运行时脚本linux