我希望这次我正确地格式化了代码。首先让我说代码按原样工作;在理解某些部分并修改其他部分时,我遇到了麻烦。
我将删除我的众多评论并将自己限制在几个问题上。1. FILE是Obj-C中的关键字吗?它的作用是什么?为什么都是大写?2. “r”是做什么的?3. 文本文件中已有包含空格的字符串,每个字符串以\n结尾;为什么不让它们成为 NSStrings 而不是 c-strings?4. 为什么,当我尝试将文件的启动参数(使用可执行文件,单击参数和加号,然后键入参数)更改为 /tmp 以外的任何内容(例如 /Desktop)时,会出现错误?毕竟,/tmp 是一个易变、易受攻击的地方。这是我为 /Desktop 得到的错误:由于信号 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;
}