私は以下のコードを使用してユーザー入力を受け取り、それを文字列exit
と比較して、ユーザーがそれを入力してゲームを終了できるようにしますコマンドラインに入力します。しかし、exit
との比較で*buffer
を使用しないと動作しません。これは、exit
の最初の文字を指しているためです。問題は、e
で始まるすべての単語が私のwhileループを終了させることを意味します。getline()でユーザー入力を行い、whileループ内の別の文字列と比較する
#include<stdio.h>
#include<stdlib.h>
int input(char *s, int length);
int main(){
char *buffer;
size_t bufsize = 32;
size_t characters;
do{
buffer = (char *)malloc(bufsize * sizeof(char));
if(buffer == NULL){
perror("Unable to allocate buffer");
exit(1);
}
printf("Enter a command: ");
characters = getline(&buffer, &bufsize, stdin);
printf("%zu characters were read.\n", characters);
printf("You typed: '%s' \n",buffer);
}while(buffer != "exit");
}
'バッファ= "終了"':これらの点を考慮すると
、あなたはこのようにあなたのコードを構築することができます。検索エンジンを使って 'malloc()'の戻り値をキャストすべき理由を調べてください。2. 'main()'関数を正しく宣言する方法。 – babon
'getline()'はバッファに改行を格納するので、それを比較文字列に含めるか、またはそれをオフにする必要があります。 – Dolda2000
それを指摘してくれてありがとう@ Dolda2000 – babon