我學習C和寫這一段代碼如何檢查是否從標準輸入爲空或換行
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int main(int argc,char *argv[])
{
char message[100];
FILE *secret=fopen(argv[1],"w");
FILE *public=fopen(argv[2],"w");
while(scanf("%99s\n",message)==1)
{
if (strcmp(message,"\n")) //this does not work as expected
break;
if(strstr(message,"secret"))
fprintf(secret,"%s\n",message);
else
fprintf(public,"%s\n",message);
}
return 0;
}
該計劃預計要做到這一點
- 接受命令兩個參數行,這是兩個文件的名稱
- 創建兩個文件指針祕密和公共。
- 從標準
- 在while循環
- 如果輸入是空的(null或換行),退出循環讀取輸入。
- 如果輸入包含短語「祕密」,則將該行放入祕密文件中。
- 其他把它公開的文件。
的問題是代碼的一部分來檢查輸入爲空是行不通的。該程序不會在空輸入(即換行符)上退出。什麼是正確的代碼?
順便說一句我讀How to check if stdin is empty in C但我什麼都不懂。
檢查文檔STRCMP ... –
我'scanf'不反正接受一個空行。即使這樣做,它也不會包含'newline'。我建議'如果(stricmp(message,「q」))' –