C语言注意事项

本文介绍了C语言的基础知识,包括数组大小计算、函数调用、字符串处理、指针操作、动态内存分配以及文件的读写。讲解了常用函数如strlen、strcpy、strcat、strcmp等,并展示了如何使用fopen、fclose进行文件操作。示例代码演示了如何实现文件内容的复制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言注意事项

计算数组大小:sizeof(str) / sizeof( str[0] )【数组str的存储空间大小 / 数组第一个元素所占的字节数 】【char-1,int-4,double-8】

函数调用:int sum( int a[ ], int n )或者 int sum( int *a, int n )
sum(str,8);

二维数组初始化时,可以省略第一维长度,但不可以省略第二维长度

C语言规定:常量字符串会自动包含空字符 ‘\0’,所以可以遍历数组到str[i] != ‘\0’ 为止。
while(c=str[i] != ‘\0’){……}

scanf() 遇到分隔符(空格符、换行符、制表符etc)就会停止读入,同时将‘\0’ 存入数组作为参数末尾标志。
所以为了解决字符串的输入,c语言用 gets(str) / puts(str) 作为字符串输入输出函数,其包含在<string.h>中。

getchar()和putchar()的应用:
int getchar(void) : 读取用户以键盘输入的单个字符,返回字符的ASCII码。【多于一个字符则只接收第一个】
int putchar(int ch):向终端输出一个字符【ch为0-127的数,否则不是ASCII值】
while( (str[i++] = getchar() !=’\n’ )){……}

字符串几个处理函数:
strcpy(字符数组,字符串); char str[50]; strcpy(str,“C Programmer”);
strlen(字符串):返回字符串的有效字符数(空字符除外)【!= sizeof(str) 】
strcat(字符数组,字符串):字符串拼接
strcmp(字符串1,字符串2):int 【0,==;>0,str1>str2;<0,str1<str2】

指针
& 取址运算符;
*间接访问符
int *p,m=3;
p = &m; 取出变量m的存储指针给p
printf("%d",*p);取出指针变量所指向的内存单元值

动态分配内存:
void *malloc(size_t size); 申请分配内存
void free(void *p); 释放所占的内存
char *p;
p = (char *)malloc(30);
free(p);

文件的打开与关闭
FIFE * fopen(const charfilename, const charmode);【参数:文件名,打开方式】
【打开方式:r—只读,w—覆盖写,a—追加内容,[r/w/a]b—以二进制方式操作】
int fclose(FILE *stream); 关闭文件
FILE * fp;
fp = fopen(“1.txt”,“r”); // 文件夹一定要存在,此处文件夹位置为当前目录下,也可为绝对路径
fclose(fp);

读写字符函数:fgetc() 和 fputc() 读单个字符
读写字符串函数:fgets() 和 fputs()
char *fgets( char *str, int num, FILE * stream); // 读入num-1个字符放入数组str中,遇到ENTER、EOF结束。
int fputs(char * str, FILE * stream); //将数组str内容写入流文件中
【EOF—Ctrl+Z表示输入结束】

int main(){
/*
 * 文件的字符串写入和读出 
 */
	FILE *fp1,*fp2;
	char ch[128];
	if((fp1 = fopen("file.txt","r")) == NULL){
		printf("cannot open file!\n");
		exit(0);
	}
	if((fp2 = fopen("file1.txt","w")) == NULL){
			printf("cannot open file1!\n");
			exit(0);
	}
	while( fgets(ch,128,fp1)>0 ){
		fputs(ch,fp2);
		printf("%s",ch);
	}
	fclose(fp1);
	fclose(fp2);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值