Работа с файлами - PullRequest
       8

Работа с файлами

0 голосов
/ 05 июня 2010

Надеюсь, на этот раз я правильно отформатировал код. Позвольте мне сначала сказать, что код работает как есть; В понимании одних частей и модификации других я сталкиваюсь с неприятностями.

Я собираюсь удалить свои многочисленные комментарии и ограничусь несколькими вопросами по этому поводу. 1. Является ли FILE ключевым словом в Obj-C? Какова его функция? Почему все заглавные буквы? 2. Что делает "r"? 3. В текстовом файле уже есть строки, содержащие пробелы, каждая из которых заканчивается \ n; почему бы не сделать их NSStrings вместо c-strings? 4. Почему, когда я пытаюсь изменить параметр запуска файла (используя исполняемые файлы, нажимая на аргументы и плюсы и вводя параметр) на что-либо, кроме / tmp (например, / Desktop), я получаю ошибки? В конце концов, / tmp - изменчивое, уязвимое место. Это ошибка, которую я получил для / Desktop: отладчик вышел из-за сигнала 10 (SIGBUS).

Вот код:

#import <Foundation/Foundation.h>

int main (int argc, const char * argv []) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

if (argc == 1)
{
    NSLog(@"You need to provide a file name");
    return 1;
}

FILE *wordFile = fopen(argv[1], "r");

char word[100]; 
while (fgets (word, 100, wordFile))
{
    word[strlen(word) - 1] = '\0';
    NSLog(@"%s is %d characs long", word, strlen(word));
}

fclose (wordFile);
[pool drain];
return 0;

}

1 Ответ

0 голосов
/ 05 июня 2010

Большая часть этого стандартного C-содержимого, оно, как оказалось, скомпилировано как target-c, но FILE, fopen () и fgets () просто старомодный C.

FILE - это, вероятно, # define'd где-то для ссылки на определение структуры. Это не ключевое слово, а обычный символ, определенный (я думаю) в stdio.h.

«r» означает «читаемый». Найдите в fopen все значения, которые может иметь аргумент, но «r», «r +», «b», «a», «w» и т. Д. Являются некоторыми из вариантов.

Вы уверены, что / Desktop является допустимым каталогом? Перейдите в этот каталог в окне консоли и введите «pwd», чтобы убедиться, что вы получили правильный путь. Возможно, вы захотите получить сообщение об ошибке, если wordFile имеет значение null (т.е. по какой-то причине не удалось найти файл или открыть его), прежде чем пытаться использовать для него fgets.

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