首先,我知道有一个名称相同的问题,但它处理的是c ++,而不是c。
有没有办法在c?
中将字符串设置到剪贴板This is the mentioned question if anyone is curious, even though it is for windows.
我需要它在c中,因为我正在用c编写程序,我想将一个字符串复制到剪贴板。
printf("Welcome! Please enter a sentence to begin.\n> ");
fgets(sentence, ARR_MAX, stdin);
//scan in sentence
int i;
char command[ARR_MAX + 25] = {0};
strncat(command, "echo '",6);
strncat(command, sentence, strlen(sentence));
strncat(command, "' | pbcopy",11);
command[ARR_MAX + 24] = '\0';
i = system(command); // Executes echo 'string' | pbcopy
除了字符串之外,上面的代码还保存了2个新行。 ARR_MAX是300。
答案 0 :(得分:0)
你为osx标记了你的问题。所以这应该足够了: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/PasteboardGuide106/Articles/pbCopying.html#//apple_ref/doc/uid/TP40008102-SW1
然而,存在必须调用非本地c的问题。这是否直接可能我不知道。如果你能接受一些hacky行为,你可以调用pbcopy命令。
http://osxdaily.com/2007/03/05/manipulating-the-clipboard-from-the-command-line/
这很容易实现。这是一个应该复制到剪贴板的短函数。但我没有方便的osx所以无法测试自己
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int copytoclipboard(const char *str) {
const char proto_cmd[] = "echo '%s' | pbcopy";
char cmd[strlen(str) + strlen(proto_cmd) - 1]; // -2 to remove the length of %s in proto cmd and + 1 for null terminator = -1
sprintf(cmd ,proto_cmd, str);
return system(cmd);
}
int main()
{
copytoclipboard("copy this to clipboard");
exit(0);
}