FILE *fFile;
fFile=fopen("1.txt","w" );//fopen("1.txt","r" );
fwrite("http://www.sunxin.org",1,strlen("http://www.sunxin.org"),fFile);
*buffer对应的是"http://www.sunxin.org"一个具体的字符串,而*stream 对应的却是一个地址fFile,这是为什么啊?百思不得其解
有没有人能帮忙解答一下,十分感谢!
13 个解决方案
#1
话说你想问什么,把字符串里的内容从fFile文件指针出处写进去,有啥问题吗。。。
#2
FILE* 指针作为文件句柄,是文件访问的唯一标识,它由fopen函数创建,fopen打开文件成功,则返回一个有效的FILE*指针,否则返回空指针NULL
看看这里blog.sina.com.cn/s/blog_4d8205e40100gjf8.html
看看这里blog.sina.com.cn/s/blog_4d8205e40100gjf8.html
#3
MSDN
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
buffer
Pointer to data to be written
size
Item size in bytes
count
Maximum number of items to be written
stream
Pointer to FILE structure
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
buffer
Pointer to data to be written
size
Item size in bytes
count
Maximum number of items to be written
stream
Pointer to FILE structure
#4
我主要想问MSDN中size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream )
*buffer是一个指针,难道"1.txt"就是一个指针吗?
*buffer是一个指针,难道"1.txt"就是一个指针吗?
#5
"1.txt" 这个表达式,返回的是这个常量字符串的地址
#6
不好意思上面写错了。我主要有两个问题想问:
1.MSDN中FILE *fopen( const char *filename, const char *mode );
程序中使用fFile=fopen("1.txt","w" ),难道"1.txt"就是一个指针吗?
2.
MSDN中size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream )
程序中使fwrite("http://www.sunxin.org",1,strlen("http://www.sunxin.org"),fFile);
*buffer是一个指针,难道"http://www.sunxin.org"也是一个指针吗?""http://www.sunxin.org“不应该是这个指针对应的值吗?
1.MSDN中FILE *fopen( const char *filename, const char *mode );
程序中使用fFile=fopen("1.txt","w" ),难道"1.txt"就是一个指针吗?
2.
MSDN中size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream )
程序中使fwrite("http://www.sunxin.org",1,strlen("http://www.sunxin.org"),fFile);
*buffer是一个指针,难道"http://www.sunxin.org"也是一个指针吗?""http://www.sunxin.org“不应该是这个指针对应的值吗?
#7
"1.MSDN中FILE *fopen( const char *filename, const char *mode );
程序中使用fFile=fopen("1.txt","w" ),难道"1.txt"就是一个指针吗?"
"1.txt"不是指针,是字符串常量,这个字符串放在内存中,那么就有一个内存地址对应这个字符串.而字符串指针变量filename的值是"1.txt"这个字符串在内存中第一个字符(也就是'1')的地址。filename里的值,仅仅是字符串第一个字符的内存地址。仅此而已
程序中使用fFile=fopen("1.txt","w" ),难道"1.txt"就是一个指针吗?"
"1.txt"不是指针,是字符串常量,这个字符串放在内存中,那么就有一个内存地址对应这个字符串.而字符串指针变量filename的值是"1.txt"这个字符串在内存中第一个字符(也就是'1')的地址。filename里的值,仅仅是字符串第一个字符的内存地址。仅此而已
#8
那const void *buffer呢,从字面意思它应该是一个指针吧,那为什么会写"http://www.sunxin.org","http://www.sunxin.org"明明是一个字符串,不是指针,类型不匹配啊?
#9
1.是
2.是
楼上的费那么多话干吗?
2.是
楼上的费那么多话干吗?
#10
字符串作为右值或参数,实际上就是该字符串首个字符的地址,即字符串起始位置的指针。
而对于 C 语言而言,void * 可以和任意指针类型隐式互转。
不要因为 string 等 C++ 类的存在就想当然地把字符串当作一种类型!
而对于 C 语言而言,void * 可以和任意指针类型隐式互转。
不要因为 string 等 C++ 类的存在就想当然地把字符串当作一种类型!
#11
字符串作为右值或参数,实际上就是该字符串首个字符的地址,即字符串起始位置的指针。
而对于 C 语言而言,void * 可以和任意指针类型隐式互转。
不要因为 string 等 C++ 类的存在就想当然地把字符串当作一种类型!
而对于 C 语言而言,void * 可以和任意指针类型隐式互转。
不要因为 string 等 C++ 类的存在就想当然地把字符串当作一种类型!
#12
谢谢大家的回答,我再好好研究研究!
#13
在 C++ 里,字符串常量(string literal)的类型是常量字符数组。比如 "z" 的类型是 const char[2] (最后会补一个'\0')
数组在使用的时候,多数情况下会自动转换成一个指针,这个指针指向数组的首元素。所以字符串常量可以用在接受 const char* 的地方。
最后,指针类型可以隐身的转换为 void * / const void * 。字符串常量用在 fwrite 的第一个参数是,就经历了这两步转换 const char[] -> const char * -> const void *
数组在使用的时候,多数情况下会自动转换成一个指针,这个指针指向数组的首元素。所以字符串常量可以用在接受 const char* 的地方。
最后,指针类型可以隐身的转换为 void * / const void * 。字符串常量用在 fwrite 的第一个参数是,就经历了这两步转换 const char[] -> const char * -> const void *
#1
话说你想问什么,把字符串里的内容从fFile文件指针出处写进去,有啥问题吗。。。
#2
FILE* 指针作为文件句柄,是文件访问的唯一标识,它由fopen函数创建,fopen打开文件成功,则返回一个有效的FILE*指针,否则返回空指针NULL
看看这里blog.sina.com.cn/s/blog_4d8205e40100gjf8.html
看看这里blog.sina.com.cn/s/blog_4d8205e40100gjf8.html
#3
MSDN
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
buffer
Pointer to data to be written
size
Item size in bytes
count
Maximum number of items to be written
stream
Pointer to FILE structure
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
buffer
Pointer to data to be written
size
Item size in bytes
count
Maximum number of items to be written
stream
Pointer to FILE structure
#4
我主要想问MSDN中size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream )
*buffer是一个指针,难道"1.txt"就是一个指针吗?
*buffer是一个指针,难道"1.txt"就是一个指针吗?
#5
"1.txt" 这个表达式,返回的是这个常量字符串的地址
#6
不好意思上面写错了。我主要有两个问题想问:
1.MSDN中FILE *fopen( const char *filename, const char *mode );
程序中使用fFile=fopen("1.txt","w" ),难道"1.txt"就是一个指针吗?
2.
MSDN中size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream )
程序中使fwrite("http://www.sunxin.org",1,strlen("http://www.sunxin.org"),fFile);
*buffer是一个指针,难道"http://www.sunxin.org"也是一个指针吗?""http://www.sunxin.org“不应该是这个指针对应的值吗?
1.MSDN中FILE *fopen( const char *filename, const char *mode );
程序中使用fFile=fopen("1.txt","w" ),难道"1.txt"就是一个指针吗?
2.
MSDN中size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream )
程序中使fwrite("http://www.sunxin.org",1,strlen("http://www.sunxin.org"),fFile);
*buffer是一个指针,难道"http://www.sunxin.org"也是一个指针吗?""http://www.sunxin.org“不应该是这个指针对应的值吗?
#7
"1.MSDN中FILE *fopen( const char *filename, const char *mode );
程序中使用fFile=fopen("1.txt","w" ),难道"1.txt"就是一个指针吗?"
"1.txt"不是指针,是字符串常量,这个字符串放在内存中,那么就有一个内存地址对应这个字符串.而字符串指针变量filename的值是"1.txt"这个字符串在内存中第一个字符(也就是'1')的地址。filename里的值,仅仅是字符串第一个字符的内存地址。仅此而已
程序中使用fFile=fopen("1.txt","w" ),难道"1.txt"就是一个指针吗?"
"1.txt"不是指针,是字符串常量,这个字符串放在内存中,那么就有一个内存地址对应这个字符串.而字符串指针变量filename的值是"1.txt"这个字符串在内存中第一个字符(也就是'1')的地址。filename里的值,仅仅是字符串第一个字符的内存地址。仅此而已
#8
那const void *buffer呢,从字面意思它应该是一个指针吧,那为什么会写"http://www.sunxin.org","http://www.sunxin.org"明明是一个字符串,不是指针,类型不匹配啊?
#9
1.是
2.是
楼上的费那么多话干吗?
2.是
楼上的费那么多话干吗?
#10
字符串作为右值或参数,实际上就是该字符串首个字符的地址,即字符串起始位置的指针。
而对于 C 语言而言,void * 可以和任意指针类型隐式互转。
不要因为 string 等 C++ 类的存在就想当然地把字符串当作一种类型!
而对于 C 语言而言,void * 可以和任意指针类型隐式互转。
不要因为 string 等 C++ 类的存在就想当然地把字符串当作一种类型!
#11
字符串作为右值或参数,实际上就是该字符串首个字符的地址,即字符串起始位置的指针。
而对于 C 语言而言,void * 可以和任意指针类型隐式互转。
不要因为 string 等 C++ 类的存在就想当然地把字符串当作一种类型!
而对于 C 语言而言,void * 可以和任意指针类型隐式互转。
不要因为 string 等 C++ 类的存在就想当然地把字符串当作一种类型!
#12
谢谢大家的回答,我再好好研究研究!
#13
在 C++ 里,字符串常量(string literal)的类型是常量字符数组。比如 "z" 的类型是 const char[2] (最后会补一个'\0')
数组在使用的时候,多数情况下会自动转换成一个指针,这个指针指向数组的首元素。所以字符串常量可以用在接受 const char* 的地方。
最后,指针类型可以隐身的转换为 void * / const void * 。字符串常量用在 fwrite 的第一个参数是,就经历了这两步转换 const char[] -> const char * -> const void *
数组在使用的时候,多数情况下会自动转换成一个指针,这个指针指向数组的首元素。所以字符串常量可以用在接受 const char* 的地方。
最后,指针类型可以隐身的转换为 void * / const void * 。字符串常量用在 fwrite 的第一个参数是,就经历了这两步转换 const char[] -> const char * -> const void *