c语言学习(3)
c语言基础知识网站,多掌握一些库函数, http://www.cplusplus.com/reference/iolibrary/
参考:https://www.runoob.com/cprogramming/c-function-fflush.html
--------------------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <stdio.h> #include <string.h> int main() { char buff[1050]; memset ( buff, '\0' , sizeof ( buff )); fprintf (stdout, "启用全缓冲\n" ); setvbuf (stdout, buff, _IOFBF, 30); fprintf (stdout, "这里是 runoob.com\n" ); fprintf (stdout, "该输出将保存到 buff\n" ); fflush ( stdout ); fprintf (stdout, "这将在编程时出现\n" ); fprintf (stdout, "最后休眠五秒钟\n" ); fprintf (stdout, "最后休眠五秒钟1\n" ); fprintf (stdout, "最后休眠五秒钟2\n" ); fprintf (stdout, "最后休眠五秒钟3\n" ); fprintf (stdout, "最后休眠五秒钟4\n" ); fprintf (stdout, "最后休眠五秒钟5\n" ); sleep(5); return (0); } |
-----------------------
--------------------------
c语言字符串的初始化,
Edit: OP (or an editor) silently changed some of the single quotes in the original question to double quotes at some point after I provided this answer.
Your code will result in compiler errors. Your first code fragment:
char buf[10] ; buf = ''
is doubly illegal. First, in C, there is no such thing as an empty char
. You can use double quotes to designate an empty string, as with:
char* buf = "";
That will give you a pointer to a NUL
string, i.e., a single-character string with only the NUL
character in it. But you cannot use single quotes with nothing inside them--that is undefined. If you need to designate the NUL
character, you have to specify it:
char buf = '\0';
The backslash is necessary to disambiguate from character '0'
.
char buf = 0;
accomplishes the same thing, but the former is a tad less ambiguous to read, I think.
Secondly, you cannot initialize arrays after they have been defined.
char buf[10];
declares and defines the array. The array identifier buf
is now an address in memory, and you cannot change where buf
points through assignment. So
buf = // anything on RHS
is illegal. Your second and third code fragments are illegal for this reason.
To initialize an array, you have to do it at the time of definition:
char buf [10] = ' ';
will give you a 10-character array with the first char being the space '\040'
and the rest being NUL
, i.e., '\0'
. When an array is declared and defined with an initializer, the array elements (if any) past the ones with specified initial values are automatically padded with 0
. There will not be any "random content".
If you declare and define the array but don't initialize it, as in the following:
char buf [10];
you will have random content in all the elements.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步