内定先から「scanf関数を使用し、入力された文字列を表示せよ。」
※未入力の場合はエラーとし、もう一度入力できるようにする事。
という課題が出されました。
c
1#include <stdio.h> 2int main(void) 3{ 4 char str[256]; 5 char fir[256] = "文字列を入力してください"; 6 7printf("%s\n", fir); 8 9 10while(scanf("%s", &str) == NULL ) 11{ 12printf("エラー\nもう一度入力してください\n"); 13} 14 15printf("%s\n",str); 16 17return (0); 18} 19
未入力の場合の処理がうまくいきません。whileの条件式は何と書いたらよいのでしょうか?
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14236779864
https://teratail.com/help#posted-otherservice を見て、
「やむを得ず複数のサイトに質問を投稿された場合は、質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。また、解決した際には必ずteratail及びすべての投稿に解決した旨と、どのように解決したかを記載してください。」の処置をしてください。
それはそれとして、「未入力」とはどういう状態?操作の結果?でしょうか。scanf("%s",引数)はなにかしらの入力がないと終了しないと思いますが。
もひとつ、NULLとの比較は、コンパイルは通るかも知れませんが間違っています。NULLおよびNULLとの比較については最近書いたのでhttps://teratail.com/questions/313598#reply-437619 を見ていただければ。