使用文件

时间:2010-06-04 23:45:59

标签: file parameters launch

我希望这次正确格式化代码。我先说代码按原样运行;它是在理解某些部分并修改我遇到麻烦的其他部分。

我将删除我的众多评论,并将自己限制在几个问题上。      1. FILE是Obj-C中的关键字吗?它的功能是什么?为什么全部上限?      2.“r”有什么作用?      3.文本文件已经包含包含空格的字符串,每个空格以\ n结尾;为什么不让它们成为NSStrings而不是c-strings?      4.为什么当我尝试将文件的启动参数(使用可执行文件,点击参数和加号,并输入参数)更改为/ tmp以外的任何内容(例如/ Desktop)时,我是否会收到错误?毕竟,/ tmp是一个易变,易受攻击的地方。这是我得到/桌面的错误:由于信号10(SIGBUS),调试器已经退出。

以下是代码:

#import <Foundation/Foundation.h>

int main(int argc,const char * argv []) {     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

if (argc == 1)
{
    NSLog(@"You need to provide a file name");
    return 1;
}

FILE *wordFile = fopen(argv[1], "r");

char word[100]; 
while (fgets (word, 100, wordFile))
{
    word[strlen(word) - 1] = '\0';
    NSLog(@"%s is %d characs long", word, strlen(word));
}

fclose (wordFile);
[pool drain];
return 0;

}

1 个答案:

答案 0 :(得分:0)

这大部分都是标准的C语言,它恰好被编译为objective-c但是FILE和fopen()以及fgets()都是老式的C语言。

FILE主要是#define'd,用于引用结构定义。它不是关键字,只是stdio.h中定义的常规符号(我认为)。

“r”表示“可读”。查找参数可以拥有的所有值的fopen,但是“r”,“r +”,“b”,“a”,“w”等是一些选项。

您确定/桌面是有效目录吗?在控制台窗口中切换到该目录并键入“pwd”以确保您获得正确的路径。如果wordFile为null(即无法找到文件或因某些原因打开它),您可能希望收到错误消息,然后再尝试使用fgets。