2016-11-20 3 views
1

私はWindowsのバッチファイルでいくつかの簡単なプログラムを書き込もうとします。このプログラムは、 "Cプログラミング言語" KernighanとRitchieの単純なアプリケーションに似ています。 このプログラムの役割は、文字番号と単語番号を数えることです。下にソースコードがありますWindowsの場合はネストされたバッチファイルのcmd

rem Char Number and words number 
@echo off 
cls 
echo =============================================================== 
echo input strin 
set /P a= 
::set variables 
set Temp_str=%a% 
set /A charcounter = 0 
set /A wordscounter = 0 
:loop 
if defined Temp_str (
    set /P actual_char=%Temp_str:~0,1% 
    if %actual_char%=="" (set /A wordscounter+=1) 
    set Temp_str=%Temp_str:~1% 
    set /A charcounter+=1; 
    goto loop 
) 
echo %a% %charcounter% %wordscounter% 

何かエラーがありますが見つかりません。私は何が間違っているのか分からない。私は実際にバッチウィンドウプログラミングから始めます。デバッグバッチファイルへ

+0

エラーメッセージを投稿してください。 –

答えて

0

常に@echo offを無効にそうあなたは問題があなたが引用符を追加する必要がライン

if %actual_char%=="" (set /A wordscounter+=1) 

上で表示されます。そこからブラインド

を飛んでいます。

1):

if "%actual_char%"=="" (set /A wordscounter+=1) 

はまた、コードと他の問題があります。

set /P actual_char=%Temp_str:~0,1% 

文字の入力を求めるプロンプトが表示されないようにするには、/ pオプションを使用しないでください。

2)空白文字列に加えてスペースもチェックする必要があります。また、最初の単語の最後に何が起こるかを確認する必要があります。


rem Char Number and words number 
rem @echo off 
cls 
echo =============================================================== 
set /P a=input string: 
::set variables 
set Temp_str=%a% 
set /A charcounter = 0 
set /A wordscounter = 0 
:loop 
if "%Temp_str%" NEQ "" (
    set actual_char=%Temp_str:~0,1% 
    if "%actual_char%"==" " (set /A wordscounter+=1) 
    set Temp_str=%Temp_str:~1% 
    set /A charcounter+=1; 
    goto loop 
) 
REM Increment word count for the final word 
if "%a%" NEQ "" (set /A wordscounter+=1) 
echo %a% %charcounter% %wordscounter% 
+0

あなたの手がかりに合わせてコードを修正しましたが、それでも動作しません – gonskabalbinka

+0

私はコードを修正しました。単語とキャラクターの定義が何であるかに応じて、それを修正する必要があります。 – FloatingKiwi

+0

ありがとうございます。今ならいい。 – gonskabalbinka

関連する問題