2013-06-26 6 views
1
find :- 
    write('Enter File Name: '), 
    see(File). 
    seen. 

Теперь пользователь может ввести имя текстового файла и прочитать текстовый файл, используя предикат (Файл). Но см. (Файл) должен соответствовать формату, например, см. («Файл.txt»), так как я могу прочитать базу текстовых файлов на имени входного файла пользователя?Чтение текстового файла с пользовательского ввода

ответ

0
find:- 
    write('Enter File Name: '), 
    read(File), 
    processFind(File). 
processFind(File):- 
    write('Enter A Name: '), 
    read(Name), 
    see(File), 
    repeat, 
    read(Term), 
    processCheck(Term, Name), 
    seen. 
processCheck(end_of_file, _):- 
    write('Record Not Found'), !. 
processCheck(Term, Name):- 
    Term = Name -> (write('Record Found'), !). 

Это правильно ответ что я наконец получил это. Введите имя файла, в том числе одной цитаты, а затем пойти на проверки ли это имя существует в файле или нет.

True возвращение Запись найденная еще запись не найдена.

0

Чтобы захватить ввод от пользователя, которые используются для чтения() предикат:

read(X). 

Таким образом, вы можете попробовать это:

find :- 
    write('Enter File Name: '), 
    read(File), 
    see(File), 
    seen. 
+0

, но выход будет как этот Введите Имя файла: |: «» xxx.txt и я хочу, как это Введите имя файла: «» xxx.txt –

+0

я могу предположить, пользователь не будет ввести имя файла с одинарными котировками. Таким образом, как я могу поставить для него одну котировку? –

+0

У меня нет моей системы пролога, установленной сейчас, чтобы проверить, но можете ли вы использовать string_concat/3 для конкатенации одиночных кавычек? –