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

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

 int main(int argc, const char * argv[])
{
int count = ;
NSLog(@"The numbers from 1 to %d:", count);
int i;
for (i=; i<=count; i++)
{
NSLog(@"%d\n", i);
}
return ();
}

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

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

 int main(int argc, const char * argv[])
{
const char *words[]={"about","above","apple","A \"Macbook pro\""};
int wordCount = ;
int j;
for (j=; j< wordCount; j++)
{
NSLog(@"%s is %lu characters long", words[j], strlen(words[j])); //%s 输出字符串
}
return ();
}

  在上面的代码中,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后缀的文本文件,添加要输出的内容。
 
 
  接着,我们就直接给大家看修改后的代码了:
 int main(int argc, const char * argv[])
{
FILE *wordFile = fopen ("/Documents/ch2/ch2/words.txt", "r");
//判断文件是否为空
if(wordFile == NULL)
{
return ();
}
char word[];
while (fgets(word, , wordFile))
{
//统计的时候,要去掉后面的换行符 \n
word[strlen(word)-] = '\0';
//去掉后面的换行符 \r
word[strlen(word)-] = '\0';
NSLog(@"%s is %lu characters long", word, strlen(word));
}
fclose(wordFile);
return ();
}
  在代码中,对了一个对文件是否存在的判断。防止在没有文件的时候,继续执行代码,避免不必要的异常。由于文本文件中,有\r\n等换行符号,所以要先替换多余的字符内容。于是,执行后的结果如下图:
 
  好了,例子介绍完了,有哪些不足或者说错的地方希望大家指正,谢谢。接下来的博文,我会开始给大家介绍OC学习中,面向对象编程的东西。希望自己能坚持下去,早日学习好Objective-C开始真正的ios开发之路。
 

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

  1. Python基础教程学习笔记:第一章 基础知识

    Python基础教程 第二版 学习笔记 1.python的每一个语句的后面可以添加分号也可以不添加分号:在一行有多条语句的时候,必须使用分号加以区分 2.查看Python版本号,在Dos窗口中输入“p ...

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

    教程视频网盘共享:http://pan.baidu.com/s/1hrTrR5E 03-python基础.if判断 print 输出数据 print("hahahah")----- ...

  3. Unity基础知识学习笔记二

    1,object Instantiate(object original,Vector3 position,Quaternion rotation)       克隆原始物体,并返回克隆物体.     ...

  4. 匿名内部类--毕向东java基础教程学习笔记

    1.匿名内部类其实就是内部类的简写形式. 2.定义匿名内部类的前提: 该内部类必须继承一个类,或者实现一个接口. 3.匿名内部类的格式:new 父类名或接口名(){定义子类内容:} 4.其实匿名内部类 ...

  5. 内部类--毕向东Java基础教程学习笔记

    内部类的访问规则 1. 内部类可以直接访问外部类的成员,包括私有. 之所以可以直接访问外部类的成员,是因为内部类中持有外部类的引用,格式:外部类名.this 2.外部类要访问内部类,必须建立内部类对象 ...

  6. 异常处理——毕向东Java基础教程学习笔记

    1.异常:就是程序运行过程中出现的不正常情况. 异常的由来:问题本身也是日常生活中一个具体的事物,也可以通过java类的形式进行描述,并封装成对象.                        其实 ...

  7. jfinal框架教程-学习笔记(二)

    上一节介绍了jfinal框架的简单搭建,这节通过一个小例子了解jfinal的结构和特点 先上图 1.建数据库(我用的是oracle数据库,其他的相对也差不多) -- Create table crea ...

  8. 《嵌入式Linux基础教程学习笔记一》

    常用书目下载地址:http://www.cnblogs.com/pengdonglin137/p/3688029.html 第二章 1.进程上下文和中断上下文(Page20) 当应用程序执行系统调用, ...

  9. Objective-C基础教程学习笔记(附录)从Java转向Objective-C

    Java接口与Objective- C正式协议类似,因为它们都需要实现一组方法.Java具有抽象类,但Objective-C没有.Java具有类变量,但在Objective-C中, 可以使用文件范围内 ...

  10. Python基础教程学习笔记:第二章 列表和元组

    1.序列中元素的索引: 第一个元素索引是0,第二个是1,依次递增 最后一个元素索引是-1,倒数第二个是-2,依次递减 2.序列(Sequence)的种类: 列表(list).元组(tuple).字符串 ...

随机推荐

  1. 实例化和设置一个优秀的php对象

    类是用于生成对象的代码模板,对象可以被说成是类的"实例" class ShopProduct{ public $title = 'default product'; // 属性也称 ...

  2. 利用java8对设计模式的重构

    java8中提供的很多新特性可以用来重构传统设计模式中的写法,下面是一些示例: 一.策略模式 上图是策略模式的类图,假设我们现在要保存订单,OrderService接口定义要做什么,而NoSqlSav ...

  3. AngularJS中Scope间通讯Demo

    在AngularJS中,每一个controller都有对应的Scope,而Scope间有时候需要通讯.比如有如下的一个controller嵌套: <body ng-controller=&quo ...

  4. MX4_ADB

    一.Ubuntu环境1. 建立或修改文件 ~/.android/adb_usb.ini,在文件开头或末尾添加一行,内容是0x2a45. 2. 建立或修改文件 /etc/udev/rules.d/51- ...

  5. 阿里开源项目 druid 相关资料汇总

    项目发起人访谈:http://www.iteye.com/magazines/90 github主页:https://github.com/alibaba/druid druid 项目,我想我能用很短 ...

  6. error LNK1104:无法打开文件"lua51.lib"

    今天学习C++与Lua通信,遇到了问题:fatal error LNK1104: 无法打开文件“lua51.lib” 开发环境: VS2012 cocos版本:cocos2d-x-3.0 已经按书&l ...

  7. [Algorithm] Calculate Pow(x,n) using recursion

    Asking you to implement the Math.pow method The navie implemenation can be: // O(N) const pow1 = (x, ...

  8. 【SqlServer】解析SqlServer中的事务

    目录结构: contents structure [+] 事务是什么 控制事务 数据并发访问产生的影响 事务的隔离级别 锁 NOLOCK.HOLDLOCK.UPDLOCK 死锁分析 在这篇Blog中, ...

  9. Djnogo Web开发学习笔记(2)

    安   装 截止目前,https://www.djangoproject.com/download/提供的最新的Django的下载版本为1.6.4. Install Django You’ve got ...

  10. Eclipse Unhandled event loop exception GC overhead limit exceeded

    修改Eclipse的配置文件: