Я хочу использовать следующую функцию в своем коде. Я хочу, чтобы он взял заданную строку, вырезал все ведущие нули и вернул строку без начальных нулей. Например я даю ему '00023'
и он возвращает '23___'
(_
пространство) У меня есть эта функция в моем коде:Невозможно скомпилировать функцию, которая возвращает части строки
function cut_zeros(string)
implicit none
character(5) :: cut_zeros, string
integer:: string_limit, i
string_limit = 5
do i= 1, string_limit
if (string(i)/='0') then
cut_zeros = string(i : string_limit)
exit
endif
enddo
end function cut_zeros
Я действительно не знаю, что проблема компилятор имеет. Он дает эту информацию:
cut_zeros = string(i : string_limit)
1
Error: Syntax error in argument list at (1)
У меня также есть другой вопрос? Можно ли сделать предполагаемую длину функции? Так что я могу передать ему строку любой длины? Насколько я понимаю, это невозможно, потому что возвращаемое значение функции нельзя считать длиной, верно?
спасибо, это было действительно полезно для меня! Что вы имеете в виду: «Обратите внимание, что вам понадобится интерфейс для обработки допустимых аргументов длины длины».? – Skyy2010
Вам нужно либо указать 'interface' для функции самостоятельно, либо (даже лучше) вы поместите функцию внутри модуля и дайте компилятору выполнить эту работу за вас. –