Linux C 第四课
来源:互联网 发布:健康体检软件 编辑:程序博客网 时间:2024/06/06 08:37
一、字符串的输入与输出
1.保存字符串要用数组
2.‘0’即‘\0’
3.C语言自定了函数 atoi();功能:将数字字符串转化成相应的数字;遇到非数字的字符即停止;可以判断正负
4.将数字字符转化成相应的数字 :str[i] - ‘0’;(str[] 是保存字符串的数组)
5.数字转换成相应字符串的方法:num + ‘0’
6.获取字符串的三种方法
#include<stdio.h>int main(){ int i = 0; char src[100]; char ch; //方法一scanf();这种方法有缺陷,即只能获取不带 空格的字符串 printf("请输入一个字符串:\n"); scanf("%s",src); //可以改进scanf("%[^\n]",src); //%[^EOF]可以控制输入到EOF的时候停止 printf("scr = %s\n",src); getchar(); //此处添加getchar();上次输入带来的'\n'垃圾值 //方法二gets();可以获得句子字符串 //危险函数,使用gets可以无限输入 printf("请输入一个字符串:\n"); gets(src); printf("src = %s\n",src); //方法三getchar(); //使用getchar();可以一个字符一个字符的输入 //当字符串超出规定长度,报错,自动截取 printf("请输入一个字符串:\n"); while((ch = getchar()) != '\n') { src[i] = ch; i++; if(i == 9)//字符串规定长度为9 { printf("error!"); break; } } src[i] = '\0'; printf("src = %s\n",src); return 0;}
6.实例:将字符串转化成对应的整数,要求模仿C语言自带函数atoi的功能
//实现将字符串转化成对应的数字#include<stdio.h>#include<string.h>#define MAX_SIZE 100int my_atoi(char *str){ int i = 0; int flag = 1; int result = 0; int len; len = strlen(str); //处理字符串的首个字符为'-'的问题 if(str[0] == '-') { flag = -1; i = 1; } for(;i < len;i++) { if((str[i] >= '0' && str[i] <= '9')) { result = result * 10 + (str[i] - '0'); } else //当遇到的字符不是数符的时候,停止循环 { break; } } return result * flag;}int main(){ char str[MAX_SIZE]; int result; printf("please enter a string:\n"); scanf("%s",str); printf("str = %s\n",str); result = my_atoi(str); printf("result = %d\n",result); return 0;}
二、格式化输入
1.格式化就是按照scanf中给定的格式输入,否则就会出错
2.%d 整型
%c 字符型
%f float型
%lf double型
%s 字符串型
%p 地址
三、数组的输入输出
1.数组名:代表数组的地址,是常量,不可以进行自加自减
2.数组首元素的地址代表数组的地址
3.数组输入输出的方式
4.int *p = a;(a是数组名)//p是变量可以进行自加自减
//数组的输入输出#include<stdio.h>int main(){ int i; int a[3]; int *p = a; printf("输入数组的值:\n"); for(i = 0;i < 3;i++) { scanf("%d",&a[i]); //scanf("%d",a + i); //scanf("%d",p++); } printf("输出数组的值:\n"); for(i = 0;i < 3;i++) { printf("a[%d] = %d\n",i,*(a + i)); //printf("a[%d] = %d\n",i,a[i]); //printf("a[%d] = %d\n",i,*p));p++; } return 0;}
四、printf的注意事项
1.printf是行缓冲,最后要加 ‘\n’ 才能输出
2.scanf 与 printf 使用的是同一个缓冲区,所以当printf后面有scanf时也可以输出
3.程序执行完成后要清理缓冲区
☆ 程序中要返回局部变量地址时,加static 以防止出错
五、i++ & ++i
1.i++是使用完(遇到结束标志),再自加一
2.++i是先加一,再使用
3.例:
i = 2;
num = (i++)+(i++)+(i++)+(i++);
//num = 8 i = 6
num = (++i)+(++i)+(++i)+(++i);
//num = 19 i = 6
4.函数是从右边开始传参,且;,( 都是结束标志
规律:++i,被替换成变量名i
i++,被替换成数值
变量名i,依然是i
f(++i,++i,i++,++i,i++);
//7,7,4,7,2
f(i++,++i,i,i++,++i);
//5,6,6,3,6
- Linux C 第四课
- C语言第四课
- C语言第四课
- 第四课、C程序结构
- linux第四课
- Linux基础-第四课
- Linux第四课
- Linux C编程第四回 - 字符串相关
- 【Linux C】第四章 指针与字符串
- Linux C编程一站式学习第四章
- Linux C 第四章 时间函数
- C语言第四课练习
- C语言第四课 数组
- 【Linux C 王者归来】【第四章】【指针与字符串】
- C#教程第四课:循环控制语句
- C#教程第四课:循环控制语句
- C语言第四堂课作业
- 小小君的C语言第四课
- hdu 4512吉哥系列故事——完美队形I(动态规划LCIS)
- eclipse从svn中导出web项目时不能添加到jboss中原因分析
- C/C++获取当前系统时间
- Leetcode 258. Add Digits (Easy) (cpp)
- 基于Eclipse IDE断点不能停下的问题解决(断点标志上带斜杠)
- Linux C 第四课
- 9、JDK的动态代理
- 统计学习方法---隐马尔可夫模型2
- tomcat+maven远程部署
- HDU - 1573 - X问题(中国剩余定理不满足互质情况下的求解)
- 博客开篇文章
- jqGrid学习之路
- Docker 命令行探秘
- NOIP2016A组模拟7.13】字符串匹配