`

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语言进阶十一课

    C语言基础十一课,从最基础的hello word开始,包括代码,逐渐进入高阶课程,是新手入门的好课程。

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

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

    C语言开发实例详解 PDF版 part2

    第二篇 语言基础篇 语法基本概念 C语言的数据输入与输出 C语言程序结构设计 结构化程序设计技巧 第三篇 算法模型篇 实例一 百钱百鸡问题 实例二 分油趣题 实例三 婚礼上的诺言 实例四 黑与白 实例五 歌德巴赫猜想...

    TMS320VC5416基础代码使用说明书_C语言_dsp_tms320vc5416_基础教程_Indicatorlight_源

    38 八、实验八:有限冲击响应滤波器(FIR)算法实验 40 九、实验九:快速傅立叶变换(FFT)算法实验 45 十、实验十:卷积算法实验 51 十一、实验十一:异步串口通信实验 63 十二、实验十二:烧写扩展 FLASH 实验 68

    C语言开发实例详解 PDF版 part6

    第二篇 语言基础篇 语法基本概念 C语言的数据输入与输出 C语言程序结构设计 结构化程序设计技巧 第三篇 算法模型篇 实例一 百钱百鸡问题 实例二 分油趣题 实例三 婚礼上的诺言 实例四 黑与白 实例五 歌德巴赫猜想...

    数据结构第三版C语言-实验1.doc

    为了达到上述目的,本课程安排了十一个实验项目,每个项目训练重点在于基本的数据结构,而不强调面面俱到。每个实验题目提交的成果都是两个部分,一个是实验报告,一个是源程序文件。实验报告以word文档格式提交,...

    算数表达式求值系统-c语言

    数学是一切研究的基础,因此一个算术表达式准确而快速的计算显得尤为重要。表达式计算在小学乃至中学大学都有着极其重要的地位,我们在平时也常常因为一些在计算中存在的小错误导致正确率不高。而且用手书写计算算术...

    C语言课件,学习C的好资料

    C语言课件,共十一章知识,包括基础、算法、数据类型、顺序结构、分支结构、循环结构、数组、函数、宏定义、指针和结构体

    89s52单片机的c语言程序

    买板子共享的基础单片机的c语言程序 Keil 软件的使用 2 *LED 显示输出* 8 一. 闪烁灯 9 二.广告灯的左移右移 10 三. 按键识别 14 四.数码管动态显示 15 五.4×4 矩阵式键盘识别 17 六.按键中断识别 19 七.定时器 T0...

    C语言开发实例详解 PDF版 part1

    第二篇 语言基础篇 语法基本概念 C语言的数据输入与输出 C语言程序结构设计 结构化程序设计技巧 第三篇 算法模型篇 实例一 百钱百鸡问题 实例二 分油趣题 实例三 婚礼上的诺言 实例四 黑与白 实例五 歌德巴赫猜想...

    C语言开发实例详解 PDF版 part5

    第二篇 语言基础篇 语法基本概念 C语言的数据输入与输出 C语言程序结构设计 结构化程序设计技巧 第三篇 算法模型篇 实例一 百钱百鸡问题 实例二 分油趣题 实例三 婚礼上的诺言 实例四 黑与白 实例五 歌德巴赫猜想...

    c语言开发实例详解(2个上传包).part1

    第二篇 语言基础篇 语法基本概念 C语言的数据输入与输出 C语言程序结构设计 结构化程序设计技巧 第三篇 算法模型篇 实例一 百钱百鸡问题 实例二 分油趣题 实例三 婚礼上的诺言 实例四 黑与白 实例五 歌德巴赫猜想...

    c语言开发实例详解(2个上传包).part2

    第二篇 语言基础篇 语法基本概念 C语言的数据输入与输出 C语言程序结构设计 结构化程序设计技巧 第三篇 算法模型篇 实例一 百钱百鸡问题 实例二 分油趣题 实例三 婚礼上的诺言 实例四 黑与白 实例五 歌德巴赫猜想...

    09年二级C语言考试大纲

    一、C语言程序的结构 1.程序的构成,main函数和其他函数。 2.头文件,数据说明,函数的开始和结束标志以及程序中的注释。 3.源程序的书写格式。 4.C语言的风格。 二、数据类型及其运算 1.C的数据类型...

    二级c未来教育题库破解及资源

    一、C语言程序的结构 1.程序的构成,main函数和其他函数。 2.头文件,数据说明,函数的开始和结束标志以及程序中的注释。 3.源程序的书写格式。 4.C语言的风格。 二、数据类型及其运算 1.C的数据类型...

    郭天祥的十天学会51单片机

    极为经典的零基础学习单片机,保证十天学会。里面有一共有十一课。c语言零基础也可以学。

    C 语言入门教程

    十一.函数参数的传递和值返回 ..................................... 44 十二.变量的作用域和存储类型...................................... 50 十三. 函数递归.................................................

    十五个经典算法研究与总结、目录+索引(定稿版)

    快递选择SELECT等15个经典基础算法,共计31篇文章,包括算法理论的研究与阐述,及其编程的具体实现。很多个算法都后续写了续集,如第二个算法:Dijkstra 算法,便写了4篇文章;sift算法包括其编译及实现,写了5篇...

Global site tag (gtag.js) - Google Analytics