私のCコードでwhileループを作ろうとしています
このような:
main()
{
char q ;
while( a == 'yes' )
{
/* my code */
printf("enter no to exit or yes to continue");
scanf("%s",q);
}
}
しかし、文字「q」を入力すると....コンソールがクラッシュします
そして働くのをやめる
whileループで何が間違っていますか??
私のCコードでwhileループを作ろうとしています
このような:
main()
{
char q ;
while( a == 'yes' )
{
/* my code */
printf("enter no to exit or yes to continue");
scanf("%s",q);
}
}
しかし、文字「q」を入力すると....コンソールがクラッシュします
そして働くのをやめる
whileループで何が間違っていますか??
文字列を と比較することはできませんa == 'yes'
。関数を使用する必要がありstrcmp
ます。
次のようなものが必要です。
int main(int argc, char **argv)
{
char a[200];
strcpy(a, "yes");
while( !strcmp(a, "yes") )
{
/* my code */
printf("enter no to exit or yes to continue");
scanf("%s",a);
}
}
いくつかのエラーがあります:
"yes"
、ではありません'yes'
。scanf
変数のアドレスが必要です: scanf("%s", &q)
、ではありませんscanf("%s", q)
。char q[4]
どうやら、文字 1 ( ) ではなく、配列変数 ( ) が必要なようですchar q
。a
条件で参照される変数while( a == 'yes')
が宣言されていません。'\n'
が印刷されるまでメッセージがバッファリングされるため、メッセージは画面に表示されません。したがって、おそらく必要なのは次のとおりです。
#include <stdio.h>
#include <string.h>
#define INP_SIZE 3
int main() {
char inp[INP_SIZE + 1] = { 0 };
while (strcmp(inp, "yes")) {
printf("enter yes to continue or whatever else to exit\n");
scanf("%3s", inp);
}
return 0;
}
PS の重複を避けるためにフォーマット文字列を作成することを考えました3
が、私の怠惰が勝ちました。
q のアドレスがありません。q の前に & を追加し、strcmp(a, "yes") を追加して、式を適切に評価してください。
あなたにはいくつかの間違いがあります。1. char は 1 文字にすぎません - 実際には数字です 2. 一重引用符を使用して 'yes' と書きます。これにより char 型が与えられ、一重引用符で囲まれた単一の文字のみを持つ必要があります。例: 'y' 3. C では、文字列は char の配列として保持され、整数のように単純に比較することはできません。
私はこれをチェックしていませんが、次のようなものを試してください:
main() {
char buf[255]; //Set up an array of chars to hold the string
buf[0] = '/0'; //set the first charactory in the array to a null charactor.
//c strings are null terminated so this sets it to an empty string
while ( strcmp(buf,"yes")==0) { //we have to use the strcmp function to compare the array
//also yes in double quotes is a null terminated char array so
printf("enter no to exit or yes to continue:"); //looks better with a colon
scanf("%s",buf); //scan f function will fill the buffer with a null terminated array
printf("\n"); //a new line here is nice
}
}
それはあなたのために働くかもしれません。ac コンパイラを手元に持っていないので、テストできません。
}
};
scanf("%s",&q);
の代わりに使用 しscanf("%s",q);
ます。
'q'
関数で変数のアドレスを渡していませんscanf
。
class WhileLoopExample {
public static void main(String args[]){
int i=10;
while(i>1){
System.out.println(i);
i--;
}
}
}