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

  这篇博文,我要记录一个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. USBWriter之后恢复磁盘大小

    USBWriter之后恢复磁盘大小的方法: 1,cmd 2,diskpart 3,list disk 4,select disk *(*你的U盘代号) (e.g:U盘为磁盘 2 ,则代号为2 ,使用命 ...

  2. .ipynb文件转.py文件

    到要转的demo.ipynb所在目录下,然后输入命令: jupyter nbconvert --to script demo.ipynb

  3. Chart-template

    ylbtech-Chart: 1.返回顶部 1-1. 2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   7.返回顶部   8.返回顶部   9.返回顶部   ...

  4. 关于#progma comment 中库文件相对路径问题

    最近做一个验证程序的对话框编程,因为里面要要用到静态链接库,所以就稍微的学习了下静态链接库知识,学习的过程中感觉到了自己所了解的东西实在是少的可怜,更加坚定了自己要更加上进的决心,要把以前所丢掉的都给 ...

  5. Android HandlerThread 源代码分析

    HandlerThread 简单介绍: 我们知道Thread线程是一次性消费品,当Thread线程运行完一个耗时的任务之后.线程就会被自己主动销毁了.假设此时我又有一 个耗时任务须要运行,我们不得不又 ...

  6. Windows平台下tomcat 性能调优

    Tomcat 线程查看工具: https://blog.csdn.net/jrainbow/article/details/49026365 16G内存 Tomcat并发优化.内存配置.垃圾回收.宕机 ...

  7. 使用go语言操作db2

    操作系统 : CentOS7.3.1611_x64 go语言版本:1.8.3 linux/amd64 db2版本: db2_v101_linuxx64_expc 问题描述 怎么使用go语言在CentO ...

  8. MySql之插入操作

    一:插入一行数据 INSERT INTO tableName(列名...) VALUES(对应列名的值); 二:插入多行 INSERT INTO tableName(列名...) VALUES(对应列 ...

  9. swift3 单例写法

    import UIKit class SingleOnce { // 单例 static let shared = SingleOnce.init() private init(){} // 其他方法 ...

  10. TurboCAD Pro for Mac(二维绘图和三维建模工具)破解版安装

    1.软件简介    TurboCAD Pro 是 macOS 系统上一款二维绘图和三维建模工具,具备强大的绘图和设计特性,加上强大的创建复杂的三维模型的工具,三维 OpenGL 的渲染,和超过 11, ...