入力として文字列を取得し、スペース、ハイフン、数字以外のものをすべて破棄する必要があります。言い換えれば、正と負の整数のみを読み込む必要があります。scanf の使用に行き詰まっているわけではありませんが、それを好むでしょう。
私がこれまでに試したことは次のとおりです。
char buffer[200];
scanf("%[0-9 ' ']*%c", buffer); /*this works perfectly, except the hyphen part*/
scanf("%[0-9 - ' ']%*c", buffer); /*no change*/
scanf("%[0-9 '-' ' ']%*c", buffer); /*still no change*/
明らかに、一度に1つだけ試しました。
あなたが提供できる洞察や助けに感謝します。