c语言学习(3)
c语言基础知识网站,多掌握一些库函数, http://www.cplusplus.com/reference/iolibrary/
参考:https://www.runoob.com/cprogramming/c-function-fflush.html
--------------------------------------------
#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.