Nano Hash - криптовалюты, майнинг, программирование

Скопировать строку в буфер обмена в c

Прежде всего, я знаю, что есть вопрос с таким же названием, но он касается c ++, а не c.

Есть ли способ установить строку в буфер обмена в c?

Это упомянутый вопрос, если кому-то интересно, даже если он для 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

Приведенный выше код сохраняет две новые строки в дополнение к строке. ARR_MAX - 300.

20.11.2014

  • Вопрос, на который вы ссылаетесь, относится к Windows. Вы отметили свой вопрос для OS X. Конечно, это совершенно разные вопросы. Уточните пожалуйста свой вопрос. Кроме того, не могли бы вы объяснить, почему так важно использовать язык C? 21.11.2014
  • Я добавил короткую функцию, которая делает именно то, что вы хотите. без использования strncat, который мне кажется отсталым. 22.11.2014

Ответы:


1

вы отметили свой вопрос для osx. поэтому этого должно быть достаточно: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/PasteboardGuide106/Articles/pbCopying.html#//apple_ref/doc/uid/TP40008102-SW1

однако существует проблема вызова неродного c. Возможно ли это напрямую, я не знаю.

если вы можете принять какое-то хакерское поведение, вы можете вызвать команду 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);
}
20.11.2014
  • Спасибо, разве это не цель c? 21.11.2014
  • Да, это. У меня нет опыта работы с целью c, поэтому я не могу больше помочь в том, как вы будете использовать ее с c. Но я думаю, что это надмножество c, поэтому, если вам повезет, это может быть довольно просто. 21.11.2014
  • Итак, ваш ответ сводится к следующему: вместо этого используйте objective-c, вот ссылка на официальные документы ... 21.11.2014
  • не совсем. Большинство языков так или иначе поддерживают взаимодействие с c. 21.11.2014
  • Раньше был Carbon Pasteboard Manager, это был C, но он исчез через 10,5 дней. Вы можете получить указатель NSPasteboard с помощью API среды выполнения objective-C, который также является просто C, но вам, по крайней мере, нужна среда выполнения ObjC, чтобы функции работали. Версия pbcopy, поставляемая с OS X, теперь связана с Cocoa, поэтому Apple также использует ObjC. Используйте Swift! 22.11.2014
  • У меня нет опыта работы со всей средой разработки Apple. может ты ответишь на его вопрос лучше, чем я? 22.11.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..