stdinに次の形式を入力するユーザーを希望するCプログラムに取り組んでいます。
<integer1> <string> <optional-integer2>
integer2が常に存在するときにプログラムを動作させています。たとえば、「3羽の鳥2」は問題なく動作します。しかし、私が試したすべての方法で、「5匹の猫」のように、オプションの部分なしで入力を受け取ると、プログラミングがハングする結果になります。オプションの整数が存在するかどうかをプログラムで確認し、存在しない場合は読み飛ばすにはどうすればよいですか?
これが私が取り組んでいるものです:
int main(){
//help();
size_t size = 20;
ssize_t len;
long num1 = 1111;
long num2 = 2222;
char *word;
char chunks[3][20];
printf("(enter command): ");
char delimeter;
char *cp;
int i;
while(1){
cp = chunks[0];
delimeter = ' ';
for(i = 0; i < 3; i++){
if(i == 2)
delimeter = '\n';
cp = chunks[i];
len = getdelim(&cp, &size, delimeter, stdin);
*(cp+(len - 1)) = '\0';
printf("cp: '%s'\n", cp);
}
for (i = 0; i < 3; i++){
printf("chunks[%d]: '%s'\n", i, chunks[i]);
}