Чего вы хотите достичь? Конечно, это работает, но это не так много. Попробуйте подход, который вы уже предложили в своем предыдущем вопросе. В частности, имейте в виду, что все строки заполнены пространством после их последнего непространственного характера, это очень важно!
'a'//' ' really produces 'a '
но
result = result//' '
производит строку 2001 символов, который затем усеченный по заданию, так что result
заканчивает тем, что то же самое.
Вы можете
result = trim(result)//' '
но и бесполезно, потому что строка заполняется пробелами в любом случае.
Если вы хотите, чтобы переменная больше, вы должны использовать:
character(:),allocatable:: result
result = '' !now contains ' ' and has length 1
result = result//' ' !now contains ' ' and has length 2
Вы должны включить перераспределить на уступки на некоторых процессорах.
Привет, Благодарим вас за ответ. Кажется, что у меня может возникнуть другая проблема, связанная с компилятором, потому что раньше я нашел аналогичный пример, но так же, как и раньше, это результат, когда я пытаюсь инициализировать любую переменную, не задавая ей статический размер: Компиляция исходного кода .. .. $ gfortran demo.f95 -o демо-2> & 1 demo.f95: 5,14: символ (:), размещаемый :: результат ошибка: Синтаксическая ошибка в объявлении CHARACTER в (1) demo.f95 : 48.10: result = '' Ошибка: Результат символа 'at (1) не имеет типа IMPLICIT – taghack
Получите последнюю версию компилятора. Поддерживаются только 4.6.4, 4.7.3 и 4.8.0. Я рекомендую последние 4.8.0 для выделяемых символов. В 4.6 они вообще не работают AFAIK. –
Но вы можете делать много полезных программ даже с обычными символами, просто убедитесь, что они имеют фиксированную длину и дополнены пробелами, и вы можете использовать функцию 'trim'. –