Чтение строки из файла с целью C - PullRequest
2 голосов
/ 06 августа 2010

Это странно.Надеюсь, я задам правильный вопрос:

Я использую метод md5 для создания значения контрольной суммы, которое затем записываю в файл.Затем я читаю файл следующим образом:

NSString * id_From_File = [[NSString alloc]
                                  initWithContentsOfFile:path_to_ID
                                  encoding:NSUTF8StringEncoding
                                  error:&error];

Результат помещается в строку NSString, которая при печати дает мне очень странное поведение.Например, когда я использую это для печати,

id_with_date = [NSString stringWithFormat:@"  %@  %@", dateString, id_From_File];

будет печатать обе строки, если dateString помещен в первый параметр и id_From_File во второй.Если я переключу их (что мне нужно сделать), то будет показан только id_From_File.

Редактировать 1: Пример переключения:

id_with_date = [NSString stringWithFormat:@" %@  %@", id_From_File, dateString];

Я твердо верю, что это как-то связано с кодировкойстроки id_From_File.

Любые знания!?

Спасибо,

Ответы [ 2 ]

10 голосов
/ 07 августа 2010

NSString действительно должен распознавать нулевые символы в качестве окончания файла. Вы пытались использовать другой метод для загрузки строки. Я бы пошел на это вместо:

- (id)initWithContentsOfFile:(NSString *)path usedEncoding:(NSStringEncoding *)enc error:(NSError **)error

Этот метод автоматически определяет кодировку файла, а не декодирует его с помощью фиксированной кодировки.

0 голосов
/ 06 августа 2010

Я решил проблему!

Это связано с тем, что некоторые строки используют нулевой символ для определения конца.Позвольте мне объяснить:

Допустим, у вас есть две строки, одна с нулевым символом в конце, а другая - нет.В зависимости от того, как вы их заказываете, они будут читаться по-разному при объединении.

 "somestring(null char)" + "another string"

Выше, в некотором коде, будет читаться

 somestring

, если места поменялись

 "another string" + "somestring(null char)"

тогда вы получите

"another string somestring"

Мой простой способ взломать это - создать новую строку с подстрокой "some string", которая легко избавилась от последнего символа, который вызывалошибка.

Надеюсь, это понятно и полезно!

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