《objective-c基础教程》学习笔记(二)—— for循环的基本应用

  在上一篇博文中,我们介绍了如何开发前期的准备,以及简单的类型输出实例。

  这篇博文,我要记录一个for循环输出的实例。并对此展开,改变成不同的三个小函数。

 1 int main(int argc, const char * argv[])
 2 {
 3     int count = 5;
 4     NSLog(@"The numbers from 1 to %d:", count);
 5     int i;
 6     for (i=1; i<=count; i++)
 7     {
 8         NSLog(@"%d\n", i);
 9     }
10     return  (0);
11 }

  学过C语言的朋友,可以很容易看明白上面的代码。就是先输出一行 “The numbers from 1 to 5:”。然后数字从1到5循环输出。运行后的结果如图:

  接下来,我们将简单的循环输出数字改成循环输出字符串,并计算每个字符串的长度。修改后的代码如下:

 1 int main(int argc, const char * argv[])
 2 {
 3     const char *words[4]={"about","above","apple","A \"Macbook pro\""};
 4     int wordCount = 4;
 5     int j;
 6     for (j=0; j< wordCount; j++)
 7     {
 8         NSLog(@"%s is %lu characters long", words[j], strlen(words[j])); //%s 输出字符串
 9     }
10     return  (0);
11 }

  在上面的代码中,const关键字表示,我们定义的是个不能被改变的字符串数组。数组中的最后一个字符串中,有‘“’要输出,所有要对其进行转义,用转义字符”\“。

这样,就可以通过for循环依次输出字符串中的元素。%s是输出字符串用的指示符,%lu是输出整形数字用的指示符。strlen()函数是统计字符串长度用的。运行后的结果如图:

  接下来,我们进一步修改代码,使得循环输出的字符串不是从字符串数组中获取,而是从文本文件中获取的。

首先,我先给大家基本普及下用C语言来对文件读取的基本操作。

(1)主要的操作有:fopen(打开文件) fclose(关闭文件);

(2)定义函数 FILE * fopen(const char * path, const char * mode);

PS:参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。

  mode有下列几种形态字符串:
    r:打开只读文件,该文件必须存在。
    r+:打开可读写的文件,该文件必须存在。
    w:打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
    w+:打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
    a:以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。

  介绍完文件的操作和调用的基本方法。首先,我们在对应文件夹中创建一个txt后缀的文本文件,添加要输出的内容。

 

  接着,我们就直接给大家看修改后的代码了:

 1 int main(int argc, const char * argv[])
 2 {
 3     FILE *wordFile = fopen ("/Documents/ch2/ch2/words.txt", "r");
 4     //判断文件是否为空
 5     if(wordFile == NULL)
 6     {
 7         return (0);
 8     }
 9     char word[100];
10     while (fgets(word, 100, wordFile))
11     {
12         //统计的时候,要去掉后面的换行符 \n
13         word[strlen(word)-1] = ‘\0‘;
14         //去掉后面的换行符 \r
15         word[strlen(word)-1] = ‘\0‘;
16         NSLog(@"%s is %lu characters long", word, strlen(word));
17     }
18     fclose(wordFile);
19     return  (0);
20 }   

  在代码中,对了一个对文件是否存在的判断。防止在没有文件的时候,继续执行代码,避免不必要的异常。由于文本文件中,有\r\n等换行符号,所以要先替换多余的字符内容。于是,执行后的结果如下图:

  好了,例子介绍完了,有哪些不足或者说错的地方希望大家指正,谢谢。接下来的博文,我会开始给大家介绍OC学习中,面向对象编程的东西。希望自己能坚持下去,早日学习好Objective-C开始真正的ios开发之路。

时间: 2024-08-05 14:11:58

《objective-c基础教程》学习笔记(二)—— for循环的基本应用的相关文章

&lt;&lt;Python基础教程&gt;&gt;学习笔记之|第01章|基础知识

本学习笔记主要用要记录下学习<<Python基础教程>>过程中的一些Key Point,或自己没怎么搞明白的内容,可能有点杂乱,但比较实用,查找起来也方便. 第01章:基础知识 ------ Jython:      Python的Java实现,运行在JVM中,相对稳定,但落后于Python,当前版本2.5,在TA(Python+Robot)会用到 IronPython:  Python的C#实现,运行在Common Language Runtime,速度比Python要快 >

01 3dmax基础教程学习笔记

学习笔记,如有错误请留言,谢谢 01 3dsmax界面介绍 02 界面UI布局 03 查看视点 04 视点显示控制 05 选择方法

jquery基础教程学习笔记一

最近静下心来看书才深刻的体会到:看书真的很重要,只有看书才能让你有心思静下心来思考. 重温<jquery基础教程> 一.事件 主要掌握常见的事件以及理解jquery的事件处理机制. 需要注意的有: 1.事件传播,包括了事件捕获和事件冒泡,以及怎么消除事件传播的影响,以及应用事件传播. 主要的方法有:a.根据事件目标来确定操作,即event.target b.阻止事件传播,即event.stopPapogation c.理解默认事件和jquery事件的区别还有阻止默认事件,即preventDef

&lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第10章 | 充电时刻

第10章 | 充电时刻 本章主要介绍模块及其工作机制 ------ 模块 >>> import math >>> math.sin(0) 0.0 模块是程序 一个简单的模块 #hello.py print ("Hello,World!") >>> import hello Traceback (most recent call last): File "<pyshell#56>", line 1, i

【学习笔记】Python基础教程学习笔记

教程视频网盘共享:http://pan.baidu.com/s/1hrTrR5E 03-python基础.if判断 print 输出数据 print("hahahah")------>hahahah a = 100 print(a)----->直接打印a的值 a = 18 print("我的年龄是%d岁"%a)------>我的年龄是18岁 age = 18 high = 178 print("我的年龄是%d岁,我的身高是%dcm&quo

&lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第14章 | 网络编程

Python是个很强大的网络编程工具,原因有二: 1. Python内有很多针对常见网络协议的库 2. Python在处理字节流方面的优势 本章主要内容: 探讨Python标准库中的一些网络模块,探讨SocketServer类,最后是Twisted框架. ------ 相关模块 Socket模块 基本组件,用于两个程序之间的信息通道.套接字包括两个: 服务器套接字和客户端套接字.创建一个服务器套接字后,让它等待连接,这样它就在某个网络地址处监听.客户端套接字负责:简单的连接,完成事务,断开连接.

&lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第09章 | 魔法方法、属性和迭代器

这一章,有点抽象,看着有点蛋疼! 双下划线__future__或单下划线有特殊含义,在Python中,这些名字的集合称为魔法方法:最重要的是__init__和一些处理访问对象的方法,这些方法允许你创建自己的序列或者是映射. ------ 准备工作: 将__metaclass__=type放在模块的最开始位置,以确保类时最新式的.考虑下面两个类 class NewStyle(object): more_code_here class OldStyle: more_code_here 如果文件以__

&lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第04章 | 字典

第04章:字典 当索引不好用时 Python唯一的内建的映射类型,无序,但都存储在一个特定的键中,键可以使字符,数字,或者是元祖. ------ 字典使用: 表征游戏棋盘的状态,每个键都是由坐标值组成的元祖 存储文件修改的次数,文件名作为键 数字电话/地址薄 函数传递值def func(x,*args,**args): 如果要建公司员工与座机号的列表,如果要获得Alice的座机只能这么找 >>> names   = ['Alice','Bob','Tom'] >>> n

&lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第13章 | 数据库支持

备注:这章内容相对介绍的比较简单,不过例子比较使用,主要是要掌握如果连接,使用数据库,并以SQLite做示例 ------ Python数据库API 为了解决Python中各种数据库模块间的兼容问题,现在已经通过了一个标准的DB API.目前的API版本(2.0)定义在PEP249中的Python Database API Specification v2.0中. 异常 为了尽可能准确地处理错误,API中定义了一些异常.它们被定义在一种层次结构中,所以可以通过一个except块捕捉多种异常. 连

EXCEL基础内容学习笔记(二)Excel文档的基本组成与功能介绍

一.基本组成 (一)工作簿.工作表与单元格 (1)工作簿:一个Excel文档即为一个工作簿. (2)工作表:工作簿中的每个表. (3)单元格:打开Excel文档,在工作表中单击,出现的加粗四边形即为单元格.单元格由行和列组成,命名时由行和列说明,称为单元格名称或地址. 一个工作簿中有若干个工作表,每个工作表有许多单元格组成. 二.功能介绍 (1)标题栏:Excel文档最上端. (2)选项卡 (3)工作区:每一个打开的选项卡都含有若干工作区. (4)名称框:所选择的单元格的名字. (5)编辑栏:可