`

C语言基础十一

    博客分类:
  • c
cfp 
阅读更多
指针数组是由多个同类型的指针变量构成的数组,声明方法如下
int *values[3];

指针数组和二级指针可以互相替换

数组指针是一个指针变量,可以用来记录二维数组的名称,声明方法如下
int (*p_values)[3];
数组指针可以和二维数组互相替换
数组指针加一时,一的单位是整个一维数组的大小

FILE结构体用来表示文件系统中的一个文件

fopen函数可以打开一个文件,如果失败则返回NULL,否则返回FILE结构体变量的地址。
打开模式结构如下
第一部分从如下三个字母中选择一个,必须存在
'r' :  对文件进行读操作,要求文件已经存在
'w' :  对文件进行写操作,如果文件还不存在则创建一个
       新文件,如果文件存在则删除
'a' :  对文件进行写操作,如果文件已存在则把新内容追
       加在文件结尾

第二部分由符号'+'表示,可以不存在。如果存在则表示对文件进行读写操作。

第三部分由符号'b'表示,可以不存在。如果存在则表示以二进制方式对文件进行操作。

fclose函数用于关闭一个文件,参数是一个FILE结构体变量地址

fputc函数可以把一个字符写入到文件中,如果失败则返回EOF。
fgetc函数可以从文件中读出下一个字符并返回,如果失败则返回EOF。

fread和fwrite函数可以以二进制方式对文件进行批量读写操作

rewind函数可以把文件的位置指针移动到文件开头

fseek函数可以把位置指针移动到文件中任何位置,三个基准点如下
SEEK_SET  : 0    表示文件开头
SEEK_CUR  : 1    表示位置指针当前位置
SEEK_END  : 2    表示文件末尾

ftell函数可以用返回值报告当前位置指针相对于文件开头的距离

fgets可以从文件中读一个字符串。
fputs可以把一个字符串写入到文件中。

fprintf函数可以按照格式把数据写入到文件中
fscanf函数可以按照格式从文件中读数据到变量中

atoi函数可以把字符串中的整数读出
atof函数可以把字符串中的浮点数读出
sprintf函数可以把多个变量的内容拼凑成一个字符串
sscanf函数可以从字符串中读出多个数据并记录在多个变量中



/*
	指针数组练习
*/
#include <stdio.h>
int main(int argc, char *argv[]) {
    int values[] = {6, 3, 7}, loop = 0;
	 int *p_value = NULL;
	 int *p_values[3] = {values, values + 1, values + 2};
    /*p_value = p_values[0];
	 p_values[0] = p_values[1];
	 p_values[1] = p_value;*/
	 p_value = p_values[1];
    p_values[1] = p_values[2];
	 p_values[2] = p_value;

	 p_value = p_values[0];
    p_values[0] = p_values[1];
	 p_values[1] = p_value;
	 for (loop = 0; loop <= 2; loop++) {
        printf("%d ", *p_values[loop]);
	 }
	 printf("\n");
    return 0;
}


/*
	字符串排序练习
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(const void* p_value, const void* p_value1) {
    const char** p_str = (const char**)p_value;
	 const char** p_str1 = (const char**)p_value1;
	 return strcmp(*p_str, *p_str1);
}
int main() {
    char *str[] = {"China", "France", "England", "Russia", "America"};
    int loop = 0;
    qsort(str, 5, sizeof(char*), compare);
	 for (loop = 0; loop <= 4; loop++) {
        printf("%s\n", str[loop]);
	 }
    return 0;
}



/*
	数组指针练习
*/
#include <stdio.h>
int main() {
    int values[2][3] = {0};
	 //int **pp_values = values;
	 int (*p_values)[3] = values;
	 /*printf("%p\n", pp_values[0]);
	 printf("%d\n", pp_values[0][0]);*/
	 printf("%d\n", values[0][0]);
	 printf("%d\n", p_values[0][0]);
	 values[1][1] = 3;
	 printf("%d\n", p_values[1][1]);
	 printf("%p, %p\n", p_values, p_values + 1);
    printf("%p, %p\n", values, values + 1);
    return 0;
}


/*
	文件练习
*/
#include <stdio.h>
int main() {
    FILE *p_file = fopen("a.txt", "w");
	 if (p_file) {
        //文件操作语句
        fclose(p_file);
		  p_file = NULL;
	 }
    return 0;
}



/*
	文件练习
*/
#include <stdio.h>
int main() {
    FILE *p_file = fopen("a.txt", "w");
	 if (p_file) {
        //文件操作语句
        char str[] = "Hello China!";
		  int pos = 0;
		  while (str[pos] != 0) {
            if (EOF == fputc(str[pos], p_file)) {
                break;
				}
				pos++;
		  }
        fclose(p_file);
		  p_file = NULL;
	 }
    return 0;
}



/*
	文件练习
*/
#include <stdio.h>
int main() {
    FILE *p_file = fopen("a.txt", "r");
	 if (p_file) {
        //文件操作语句
              char ch = 0;
	      while (EOF != (ch = fgetc(p_file))) {
                   printf("%c", ch);
	      }
	       printf("\n");
               fclose(p_file);
	       p_file = NULL;
	 }
    return 0;
}

/*
	文件练习
*/
#include <stdio.h>
int main() {
    FILE *p_file = fopen("a.txt", "r");
	 if (p_file) {
        //文件操作语句
        char buf[20];
		int size = 0;
        while (EOF != (buf[size] = fgetc(p_file))) {
            size++;
		}
        fclose(p_file);
		p_file = NULL;
		p_file = fopen("a.txt", "w");
		if (p_file) {
            size--;
			while (size >= 0) {
                if (EOF == fputc(buf[size], p_file)) {
                    break;
				}
				size--;
			}
			fputc('\n', p_file);
			fclose(p_file);
			p_file = NULL;
		}
	}
    return 0;
}

/*
	文件练习
*/
#include <stdio.h>
int main() {
    int values[] = {1, 2, 3};
    FILE *p_file = fopen("a.bin", "wb");
	 if (p_file) {
        //文件操作语句
        int size = fwrite(values, sizeof(int), 3, p_file);
		  printf("共写入%d个变量\n", size);
        fclose(p_file);
		  p_file = NULL;
	 }
    return 0;
}


/*
	文件练习
*/
#include <stdio.h>
int main() {
    int values[3] = {0}, loop = 0;
    FILE *p_file = fopen("a.bin", "rb");
	 if (p_file) {
        //文件操作语句
        int size = fread(values, sizeof(int), 3, p_file);
		  printf("共读出%d个变量\n", size);
		  for (loop = 0; loop <= 2; loop++) {
            printf("%d ", values[loop]);
		  }
		  printf("\n");
        fclose(p_file);
		  p_file = NULL;
	 }
    return 0;
}


/*
	文件练习
*/
#include <stdio.h>
int main() {
    FILE *p_file = fopen("a.txt", "r");
	 if (p_file) {
        //文件操作语句
        char ch = 0;
		  fseek(p_file, 3, SEEK_SET);
		  ch = fgetc(p_file);
		  printf("%c ", ch);
		  //rewind(p_file);
		  fseek(p_file, 3, SEEK_CUR);
		  ch = fgetc(p_file);
		  printf("%c ", ch);
		  //rewind(p_file);
		  fseek(p_file, -2, SEEK_END);
		  ch = fgetc(p_file);
		  printf("%c ", ch);
		  printf("\n");
        fclose(p_file);
		  p_file = NULL;
	 }
    return 0;
}


/*
	变长参数函数练习
*/
#include <stdio.h>
#include <stdarg.h>
int max (int cnt, ...) {
    int ret = 0, loop = 0;
	 va_list v;
	 va_start(v, cnt);
	 for (loop = 0; loop < cnt; loop++) {
        int value = va_arg(v, int);
		  if (value > ret) {
            ret = value;
		  }
	 }
	 va_end(v);
	 return ret;
}
int main() {
    printf("最大数字是%d\n", max(3, 6, 32, 17));
	 printf("最大数字是%d\n", max(4, 2, 9, 7, 3));
    return 0;
}




static void trace(const char *format, ...){
	FILE *fp = NULL;
	va_list args;

	fp = fopen("/var/tmp/whj.txt", "a+");
	if (fp){
		va_start(args, format);
		vfprintf(fp, format, args);
		fflush(fp);
		va_end(args);
		fclose(fp);
	}
}


*/
#include <stdio.h>
#include <stdlib.h>
int main() {
    char str[20] = {0};
    int value = atoi("328");
	 double d = atof("4.78");
	 printf("value是%d\n", value);
	 printf("d是%lg\n", d);
	 printf("%d %lg\n", value, d);
	 sprintf(str, "%d %lg\n", value, d);
	 printf("%s", str);
	 value = 0;
	 d = 0.0;
	 sscanf(str, "%d %lg", &value, &d);
	 printf("value是%d,d是%lg\n", value, d);
    return 0;
}




分享到:
评论

相关推荐

    C语言基础知识PPT 共十一章知识内容

    C语言基础知识PPT 共十一章知识内容 适合大一初学C语言者期末复习/考前突击 第一章绪论 第二章C数据类型 第三章简单的简单的算术运算和表达式 - new.ppt 第04章-键盘输入和屏幕输出 - new.ppt 第05章-网站习题.ppt ...

    C语言进阶十一课

    在本课程"C语言进阶十一课"中,我们将深入探讨C语言的核心概念和技术,逐步从基础知识过渡到高级主题。这是一门专为初学者设计的教程,旨在帮助新接触编程的学员快速掌握C语言,从而开启他们的编程之旅。 C语言是一...

    C语言基础面试题01(概念和基本结构).docx

    ### C语言基础面试知识点解析 #### 一、Continue、Break和Return的区别 1. **Continue**: 当在循环中遇到`continue`语句时,当前循环的剩余部分将被跳过,控制权直接传递到循环的下一个迭代。例如,在`for`循环中...

    C语言基础知识归纳.doc

    C语言基础知识归纳 以下是对C语言基础知识的归纳总结,涵盖了C语言的基本概念、变量、数据类型、运算符、控制结构、函数、数组、字符串、指针、结构体、文件输入/输出、预处理命令等方面。 一、基本概念 * C语言...

    c语言基础2024.docx

    ### C语言基础知识点详解 #### 一、C语言概述 C语言是一种通用的编程语言,因其高效性、灵活性和简洁性而被广泛应用于系统编程、嵌入式开发、操作系统开发等多个领域。它由贝尔实验室的丹尼斯·里奇在1972年左右...

    c语言基础知识总结.doc

    以下是对C语言基础知识的详细说明: 一、程序构造 C语言的程序结构包括三种基本构造:顺序构造、选择构造(分支构造)和循环构造。顺序构造按照代码的顺序依次执行;选择构造通过条件判断决定执行哪一部分代码,如...

    3、C语言基础.rar

    C语言以其强大的功能和灵活性,成为了计算机科学教育的基础课程之一。下面将详细讨论C语言的基础知识。 一、C语言简介 C语言由Dennis Ritchie在1972年于贝尔实验室开发,它以BCPL(Basic Combined Programming ...

    C语言基础教程(经典)

    C语言是一种广泛应用于...通过本教程的学习,你将逐步了解和掌握C语言的基础知识,并能编写出简单的C程序。随着实践的增加,你将能够驾驭更复杂的编程任务,实现自己的程序设计目标。祝你在C语言的学习之旅中取得成功!

    C语言基础教程、小白学习教程

    ### C语言基础教程知识点梳理 #### 一、引言 - **C语言简介**: - **起源**:C语言最初是由丹尼斯·里奇在20世纪70年代为重写UNIX操作系统而开发。 - **特点**: - **简洁性**:语法结构简单,易于理解和学习。 ...

    c语言基础教程c语言基础教程

    本教程将深入浅出地介绍C语言的基础知识,帮助初学者快速入门。 一、C语言简介 C语言由Dennis Ritchie于1972年在贝尔实验室开发,起初用于Unix操作系统的编写。其语法简洁明了,执行效率高,被广大程序员所喜爱。...

    c语言、ubuntu,脚本基础知识整理

    ### C语言、Ubuntu、脚本基础知识整理 #### 一、嵌入式Linux C语言开发工具 **1.1 嵌入式Linux编译器Vi的使用** **1.1.1 vim常用命令** - **替换文本命令**: `:%s/str1/str2/g` 表示用 `str2` 替换正文中出现的...

    谭浩强c语言电子书全本

    这本书以通俗易懂的语言,系统地介绍了C语言的基本概念、语法结构以及编程技巧,旨在帮助读者快速掌握C语言编程基础。 一、C语言概述 C语言是一种结构化编程语言,具有高效、灵活、可移植性强等特点。它既能进行...

    c语言实验答案1.1-15.3

    本压缩包“C语言实验答案1.1-15.3”包含了从基础到进阶的C语言实验题目及对应的解答,覆盖了C语言的关键知识点。 1. **C语言概述**:C语言是由Dennis Ritchie在贝尔实验室开发的一种过程式编程语言。它的设计目标是...

    c语言基础知识总结.docx

    十一、函数指针 函数指针是 C 语言中实现动态调用的重要方式。函数指针可以指向外部类型的函数。 十二、static 关键字 static 关键字可以用于全局变量和函数,限定变量和函数的使用范围仅为该源文件。static ...

    C语言教程PPT版

    十一、文件操作 C语言提供了标准输入/输出流(stdio.h)库,可以读写文本文件。了解文件打开、关闭、读写等操作是进行文件处理的基础。 十二、结构体与联合体 结构体允许我们将不同类型的数据组合在一起,形成复合...

    C语言初学者入门讲座

    本讲座针对的是C语言的初学者,旨在帮助他们快速掌握C语言的基础知识和编程技巧。 一、C语言简介 C语言由Dennis Ritchie在1972年开发,是贝尔实验室为UNIX操作系统设计的一种通用编程语言。它的语法简洁明了,执行...

    c语言 实验指导书

    - 实验十和实验十一重点介绍了指针,这是C语言的一大特色,包括指针的声明、赋值、解引用以及通过指针进行数据操作。 - 实验十二和实验十三介绍了结构体和共用体,它们允许我们将不同类型的数据组合在一起,形成...

    C语言十一套试题.docx

    根据提供的文档信息,我们可以从这份C语言测试题中提取出一...以上知识点涵盖了C语言中的一些基础概念及其应用,对于学习C语言的学生来说是非常宝贵的资源。通过练习这类题目,可以加深对C语言的理解,并提高编程能力。

    C语言入门PPT文档

    本篇C语言入门PPT文档旨在为初学者提供一个全面且易懂的学习平台,帮助大家快速掌握C语言的基础知识。 一、C语言简介 C语言由贝尔实验室的Dennis Ritchie在20世纪70年代初开发,最初用于Unix操作系统的编写。由于其...

Global site tag (gtag.js) - Google Analytics