网站首页 > 文章中心 > 其它

c语言函数读取指针_c语言函数指针的使用

作者:小编 更新时间:2023-10-15 19:22:58 浏览量:160人看过

c语言,函数里的指针问题?

这个其实很好理解

只需要把%s,%c,%p放在一起看

首先%s是最常见的很好理解,就是告诉程序后面的变量是一个字符串,在C语言中也就是字符数组,类型是char*或者char[],换句话说,你告诉程序我会给你一个指针,你去读这个指针指向的值.

然后%c是告诉程序后面的变量是个字符,类型是char,差别已经很明显了,这时候你告诉程序我给你提供一个字符,你给我在%c处打印出来.然而你给的却是一个指针,那程序就直接把你给的指针指向的地址本身当成字符打印出来了.但是一个地址肯定不止一个字节,也就是说超过了char应该有的大小,这时候程序会直接忽略了超出大小的部分,只读第一个字节.

c语言函数读取指针_c语言函数指针的使用-图1

C语言-函数指针

/*

函数指针,关键是后面两个字"指针",顾名思义,是一个指向函数的指针

原理:函数在创建好了后,函数的代码会在内存中占有个位置,这时我们创造一个指针来指向这个地址,这个指针就叫函数指针

函数指针不可以移动,想要移动指针的位置来指向函数的下一个指令的想法是错误的

函数指针的要求,

①.,首先这个指针,要和函数的返回类型一样

但是加上形参名也可以,没毛病,看上去也更清晰

*/

#include

void swapchar(char *a, char *b)

{

char t;

t = *a;

*a = *b;

*b = t;

}

int main(void)

char chf = 'a', chg = 'j';

void(*p)(char * a, char * b);//定义函数指针、形参名字a、b可有可无,但有的话看上去更清晰,只要函数定义的类型、参数类型、以及参数个数,与这个指针一致,那么这个指针p,就可以指向它

p = swapchar;//p指针接管swapchar函数,只要给函数名字,就可以给过去了

printf("chf=%c,chg=%c ", chf, chg);

p(chf, chg);

p(chf,chg);

return 0;

c语言读取文件指针问题,循环条件while(!feof(fp))什么意思?

"r".为读而打开文本文件.(不存在则出错)

"rb".为读而打开二进制文件

while(!feof(fp))

文件到尾判断

最常用的文件使用方式及其含义如下:

"rb".为读而打开二进制文件.

"w".为写而打开文本文件.(若不存在则新建,反之,则从文件起始位置写,原内容将被覆盖)

"wb".为写而打开二进制文件.

"a".为在文件后面添加数据而打开文本文件.(若不存在,则新建;反之,在原文件后追加)

"ab".为在文件后面添加数据而打开一个二进制文件.

"r+".为读和写而打开文本文件.(读时,从头开始;在写数据时,新数据只覆盖所占的空间,其后不变)

"rb+".为读和写而打开二进制文件.只是在随后的读写时,可以由位置函数设置读和写的起始位置.

"w+".首先建立一个新文件,进行写操作,随后可以从头开始读.(若文件存在,原内容将全部消失)

"wb+".功能与"w+"同.只是在随后的读写时,可以由位置函数设置读和写的起始位置.

"a+".功能与"a"相同;只是在文件尾部添加新的数据后,可以从头开始读.

"ab+".功能与"a+"相同;只是在文件尾部添加新数据之后,可以由位置函数设置开始读的起始位置.

C语言指针的写入读出

你的里面是有语法错误的

对你fwtite函数的使用没有正确使用

这个不是靠for循环实现多次读入的

具体的用法:

int fwrite( const void *buffer, size_t size, size_t count, FILE *stream );

fwrite()函数从数组buffer(缓冲区)中, 写count个大小为size(大小)的对象到stream(流)指定的流. 返回值是已写的对象的数量.

然后你的里面还是应用了for循环

#include "stdio.h"

struct student_type

char name[10];

int num;

int age;

void save()

FILE *p;

if((p=fopen("FILE.txt","wb"))==NULL)

printf("open error\n");

return;

//int fwrite( const void *buffer, size_t size, size_t count, FILE *stream );

//fwrite()函数从数组buffer(缓冲区)中, 写count个大小为size(大小)的对象到stream(流)指定的流. 返回值是已写的对象的数量.

if ( fwrite(stud[i],sizeof(struct student_type),1,p)!=1)

printf("data error\n");

fclose(p);

void main()

int i;

printf("请输入数据:\n");

scanf("%s",stud[i].name);

scanf("%d",stud[i].num);

scanf("%d",stud[i].age);

scanf("%s",stud[i].addr);

save();

FILE *fp;

fp=fopen("FILE.txt","rb");

printf("%s\t",stud1[i].name);

printf("%d\t",stud1[i].age);

printf("%d\t",stud1[i].num);

printf("%s\t",stud1[i].addr);

printf("\n");

fclose(fp);

至于fwrite好像是对数值型的写入有点不一样,就算是直接以"w"格式写入也是会出现不是直接看到数值

以上就是土嘎嘎小编为大家整理的c语言函数读取指针相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章