如何限制C中的scanf函数在输入太长时打印错误?

use*_*966 3 c string input scanf

我想限制scanf函数,所以当我输入例如一个char* array <String...>超过30个字符的时候,它就不会得到它而我的输出会出错.

我有一个暗示使用[^ n]或类似的东西,但我不明白该怎么做?我知道我可以使用,scanf("%30s"..)但我不希望输入有效,只是错误.

任何帮助都会很棒.

pb2*_*b2q 6

如果你必须使用scanf那么我相信你可以做的最好的是使用宽度说明符,如:"%31s"你已经提到的那样,然后strlen用来检查输入的长度,并丢弃字符串并报告错误,如果输入超过您的限制.

或者可以跳过strlen另外使用%n格式字符串,例如"%31s%n".

使用类似的格式字符串%[^\n]代替%s简单的指示功能继续读书,直到一个换行符,消费沿途其他空白字符.如果要允许输入包含空白字符,这将非常有用.

查看scanf的文档(是手册页的副本).