--------------------------------------------

 



#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语言学习(3)_ide-----------------------

--------------------------

c语言字符串的初始化,

 

​https://stackoverflow.com/questions/18688971/c-char-array-initialization#:~:text=You%20can%20use%20double%20quotes,the%20NUL%20character%20in%20it.​

c语言学习(3)_c语言学习_02

 

 

 

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.