The clauses that are relevant are:
17.3.1.1 §2: "All library entities except macros, operator new and operator delete are defined within the namespace std or namespaces nested within namespace std."

137.3.1.2 §4: "Except as noted in Clauses [...], the contents of each header cname shall be the same as that of the corresponding header name.h, as specified in [C standards], as appropriate, as if by inclusion. In the C++ Standard library, however, the declarations and definitions (except for names which are defined as macros in C) are within namespace scope of the namespace std."

Note that it is therefore, strictly speaking, non-compliant to have the contents visible in the global namespace after including a <c*> header. However, due to the extremely common implementation technique of including the .h and importing into the std namespace, this is a very commonly violated part of the spec.

Annex 0 1.5 &#167;2: "Each C header, whose name has the form name.h, behaves as if each name placed in the Standard library namespace by the corresponding cname header is also placed within the namespace scope of the namespace std and is followed by an explicit using-declaration."

In other words, including the C-style header actually has to make the stuff available in std:: and in ::. I don't think any popular implementation actually conforms to this.