首页 > 其他分享 >C语言涉及问题(文件IO与数组和指针)

C语言涉及问题(文件IO与数组和指针)

时间:2024-08-29 10:59:50浏览次数:9  
标签:arr IO 函数 C语言 char 数组 buf 指针

一、文件IO相关

1、标准出错、输入、输出三者的缓冲机制是什么?

标准出错(stderr):属于不缓冲机制,数据直接写入设备

标准输入(stdin)和标准输出(stdout):属于行缓冲和全缓冲,行缓冲时需要用'\n'分隔,全缓冲是缓冲区满才会写入或者输出。

冲刷缓冲函数:fflush();无论是如果想将全缓冲变成行缓冲,可以在这个输出后添加fflush函数,将其中数据冲刷出来

2、标准输入和标准输出函数及其家族

标准输入:例如下列变量定义(int a;char m;char buf[20],*str;FILE *file;)

函数名函数功能函数使用方法
scanf();标准输入,将键盘的值赋值给变量地址scanf("%d",&a);
fgets();输入一个字符串,通过标准输入获取fgets(buf,20,stdin);
getchar();拿走一个字符while(getchar()!='\0');
fgetc()读取一个字符fgetc(m);
getc跟fgetc效果相同getc(m);
gets跟fgets差不多,已废弃不讨论
fscanf();将文件中的数据按指定格式赋值给变量fscanf(file,"%d %s",&a,buf);
sscanf();将字符串中的数据按指定格式赋值给变量sscanf(str,"%d %s",&a,buf);

标准输出:例如下列变量定义(int a;char m;char buf[20],*str;FILE *file;)

函数名函数功能函数的使用方法
printf();标准输出printf("hello word\n");
puts();用于输出到屏幕上,自带'\n'不需要自己换行puts("hello word");
fputs();用于将数据输入到文件中,如果需要换行需要手动添加'\n'fputs("hello word\n",file);
putc();用于将单个字符写入文件或标准输出,多数用于标准输出putc('H',stdout);
fputc();用于将单个字符写入文件或标准输出,多数用于文件写入fputc('H',file);
fprintf();将指定数据输入到文件中fprintf(file,"a %d %s",a,buf);
sprintf();将指定数据拼接成一个新的字符串,用于字符串拼接sprintf(str,"hello %s %d",buf,a);
dprintf非标准库中函数,(不重要)
snprintf();sprintf()函数的安全版本,多了一个字符控制snprintf(str,20,"hello %s %d",buf,a);

二、数组和指针

1、数组的描述

如何在数组运行时获取数组大小?

答:可以通过sizeof(arr) / sizeof(arr[0])来计算数组的元素个数,前提arr不是指针

为什么sizeof(arr) / sizeof(arr[0])可以计算数组的元素个数,但这种方法对指针不适用?

答:当arr是指针时,sizeof(arr)给出的是指针本身的大小,而不是它所指向的内存区域的大小。

数组名在表达式中通常被当作什么?

答:在大多数表达式中,数组名被当作指向数组首元素的指针。

当数组作为函数参数传递时,实际上传递的是什么?

答:传递的是数组首元素的地址。

C语言中字符串是如何存储的?

以空字符'\0'结尾的字符数组。

2、指针的描述

什么是野指针?如何避免野指针的出现?

答:野指针是指向未知(或无效、未分配、已释放)内存地址的指针。初始化指针、检查指针的有效性、避免指针越界、及时释放内存

请解释指针加1在int型指针和char型指针上分别意味着什么?

答:指针加1意味着指针指向的内存地址向前移动了一定的字节数,在int型指针上向前移动4位,在char型指针上向前移动1个字节数.

给定一个结构体定义,如何通过指针访问结构体的成员?

答:首先需要使用指针指向结构体变量,然后通过->运算符来访问结构体的成员。

const char *buf;char const *buf;char *const buf;分别描述什么意思?

        

char const *buf="abst";

*buf="jdas";错误,

 buf++;正确

不能通过buf指针来修改它所指向的字符数据,但你可以改变buf指针本身的值
const char *buf="abst";

char data[]="abst"

char *const *buf=data;

*buf="l";正确

buf++;错误

不可改变指针但是可以改变值

标签:arr,IO,函数,C语言,char,数组,buf,指针
From: https://blog.csdn.net/q521131415/article/details/141667189

相关文章

  • Stable Diffusion:AI艺术的革新者,释放无尽创意!
    亲爱的朋友们,作为一名AI领域的深度测评体验官,今天我将为大家介绍一款令人惊叹的AI图像生成工具——StableDiffusion。这是一款基于潜在扩散模型的AI,能够将您的创意文字转化为令人叹为观止的视觉艺术作品。......
  • net core自定义 Configuration Provider
    创建CustomConfigurationProvider首先,我们需要创建一个自定义的ConfigurationSource和ConfigurationProvider来支持配置文件的读取和监控。publicclassCustomConfigurationSource:IConfigurationSource{publicstringFilePath{get;}publicCustomConfig......
  • 地平线—征程2(Journey 2-J2)芯片详解(28)—MIPI RX/TX+SD/SDIO/eMMC Interface Timings
    写在前面本系列文章主要讲解地平线征程2(Journey2-J2)芯片的相关知识,希望能帮助更多的同学认识和了解征程2(Journey2-J2)芯片。若有相关问题,欢迎评论沟通,共同进步。(*^▽^*)错过其他章节的同学可以电梯直达目录↓↓↓地平线—征程2(Journey2-J2)芯片详解——目录-CSDN博客1......
  • Android Audio分区——车载多区音频基础(一)
            AndroidAudio多区音频功能主要针对的是AndroidAutomotive这样的场景,它允许在同一个Android设备上支持多个独立的音频区域,每个区域可以有不同的音频输出设置。这种功能特别适用于汽车环境,因为车内通常有多个乘客,他们可能希望听不同的音频内容。一、概念......
  • C语言--运算符3
    自增自减运算符i++,i--运算符在后,在表达式中先用i的值,下条语句i的值自增或者自减#include<stdio.h>intmain(){inti=1;intnum;num=i++;printf("num=%d,i=%d\n",num,i);//num=1,i=2return0;}++i先加,后用#include<stdio.h>intmain(){inti=1;intnum;......
  • 大模型提示词工程技术4-提示词架构设计,包括:TAG框架,TRACE框架,ICIO框架
    大模型提示词工程技术4-提示词架构设计,包括:TAG框架,TRACE框架,ICIO框架。《大模型提示词工程技术》的作者:微学AI,这是一本专注于提升人工智能大模型性能的著作,它深入浅出地讲解了如何通过优化输入提示词来引导大模型生成高质量、准确的输出。书中不仅涵盖了提示词工程的基本......
  • IntersectionObserver实现监听dom进入浏览器视口
    letimg=document.getElementsByTagName("img");constobserver=newIntersectionObserver(entries=>{//entries是被观察的元素集合for(leti=0,len=entries.length;i<len;i++){letentries=entries[i];//通过这个属性判断是否在视口......
  • AutoSynth: Learning to Generate 3D Training Datafor Object Point Cloud Registrat
    目录一、导言二、先导知识1、进化算法概述2、4pcs算法3、Super4PCS算法三、相关工作1、传统点云配准工作2、基于深度学习的点云配准3、生成训练数据集四、AutoSynth框架1、搜索空间2、进化算法3、代理任务模型五、实验 1、测试数据集2、BOP评估指标3、对比实......
  • P2900 [USACO08MAR] Land Acquisition G
    题目思路我们按照土地的长为第一关键字,土地的宽为第二关键字,从大到小排序,对于将被大矩形完全包含的小矩形删去,因其不影响结果,这样就得到了长严格下降,宽严格上升的序列。从左往右考虑合并,假如将\(l\)到\(r\)段合并,那么长取矩形\(l\)的长\(w_l\),宽取矩形\(r\)的宽\(h_......
  • day06(IO进程)进程 process
    目录一.什么是进程1. 概念2. 特点3.进程段4.进程分类5.进程状态6.进程状态切换图7. 进程相关命令补充:优先级调度(笔试可能遇见)二.进程函数接口1. 创建进程fork()2.回收资源waitwaitpid3.结束进程4.获取进程号getpid getppid三.exec函数族(了解......