1

?ユーザーがバッファの末尾にa を追加したかどうかを確認したい。そうでない場合は、プログラムに自動的に追加してもらいたいです。これは私がこれまでに持っているものです。次に何をすべきかわかりません。

まず、バッファが空白でないかどうかを確認します。
次に、最後の項目が でない場合は?、疑問符をバッファーに自動的に追加し、その内容を現在のデータ ノードにコピーします。

if ( strlen(buffer) != 0)
{
   if (buffer[strlen(buffer)-1] != '?')
   {

           //what do i put here to add the ? if theres non?    
   }

strcpy(current->data,buffer);

}
4

2 に答える 2

7

私が見る限り、このように変更しても何も得られませんbuffer。必要に応じて?to を追加するだけです。current->data

int len = strlen(buffer);
strcpy(current->data, buffer);
if (len && buffer[len-1] != '?') {
    current->data[len] = '?';
    current->data[len+1] = '\0';
}

それがオプションである場合は、std::string代わりに使用するようにコードを変更することを検討する必要があります。

std::string buffer = input();
if (!buffer.empty() && buffer.back() != '?') buffer += '?';
std::copy(buffer.begin(), buffer.end(), current->data);
current->data[buffer.size()] = '\0';

C++11 コンパイラがない場合は、*buffer.rbegin()代わりにbuffer.back().

于 2013-05-02T21:03:49.827 に答える