Что такое тип FILE * в Какао и как правильно его использовать? - PullRequest
1 голос
/ 12 октября 2011

Я пытаюсь запустить команды Bash из моего приложения Какао.И получить вывод.Я выполняю все эти команды с правами администратора. Как получить вывод из bash-скрипта Admin Priveleges, вызванного из Какао?

Я думаю, мне нужен тип FILE * для хранения вывода, но я не знаю, как его использовать.

Что такое тип FILE *?И как мне его использовать?

Ответы [ 2 ]

3 голосов
/ 12 октября 2011

FILE * относится к типу C и не имеет никакого отношения к какао. Это дескриптор для открытого файла. Вот пример:

#include <stdio.h>

int main () {
  FILE *file;
  file = fopen("myfile.txt", "w"); // open file
  if (!file) { // file couldn't be opened
    return 1;
  }
  fputs("fopen example", file); // write to file
  fclose(file);
  return 0;
}

В Какао обычно следует использовать методы NSString и NSData * writeToURL:atomically:encoding:error: и writeToURL:atomically: соответственно.

1 голос
/ 12 октября 2011

FILE - это структура ANSI C, используемая для обработки файлов.Функция fopen возвращает указатель файла.Этот указатель указывает на структуру, которая содержит информацию о файле, такую ​​как местоположение буфера, текущая позиция символа в буфере, читается или записывается файл, а также произошли ошибки или конец файла.Пользователям не нужно знать подробности, потому что определения, полученные из stdio.h, включают в себя объявление структуры под названием FILE.Примером единственного объявления, необходимого для указателя файла, является

FILE *fp;
FILE *fopen(char *name, char *mode);

. Это говорит о том, что fp является указателем на FILE, а fopen возвращает указатель на FILE.Обратите внимание, что FILE - это имя типа, например, int, а не тег структуры;он определяется с помощью typedef.

#include <stdio.h>

int main()
{
   FILE * pFile;
   char buffer [100];

   pFile = fopen ("myfile.txt" , "r");
   if (pFile == NULL) perror ("Error opening file");
   else
   {
     while ( ! feof (pFile) )
     {
       if ( fgets (buffer , 100 , pFile) != NULL )
         fputs (buffer , stdout);
     }
     fclose (pFile);
   }
   return 0;
}

В этом примере читается содержимое текстового файла myfile.txt и отправляется в стандартный поток вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...