objective-c的fget()读文件,读出的内容少了?我在学objective-c基础教程的例子。例子如下:int main(){FILE *
objective-c的fget()读文件,读出的内容少了?
我在学objective-c基础教程的例子。例子如下:
int main()
{
FILE *wordFile = fopen("D:/word.txt","r");
char word[100];
while (fgets(word,100,wordFile))
{
word[strlen(word) - 1] = '\0';
NSLog(@"%s is %d character long",word,strlen(word));
}
fclose(wordFile);
return 0;
}
word.txt的内容是一行一个字符串,最后一行是字符串"j"
可是输出内容却不对“ is 0 character long”
为什么明明有个j,却没读到?
[解决办法]
来人哪
[解决办法]
参照我的一篇博文:
http://blog.csdn.net/yang3wei/article/details/7856273
[解决办法]
看了,跟我的一样啊
[解决办法]啊啊啊啊啊啊,做了这些年的java,没想到要从新学C,哎
来人呐
[解决办法]你吧我博文里面的代码拿过去试一下,我估计是你这写法有问题,
不能指望自己不动一点儿脑筋和手就吧问题解决吧?
[解决办法]写法没有问题,我也动脑筋和手了
[解决办法]你当我是刚毕业的大学生啊?
想训就训?
[解决办法]不知道LZ说的是不是其他所有字都正常读取到了,但是唯独只有最后一个J没有读到。
如果是这么回事的话,应该是因为
word[strlen(word) - 1] = '\0';这句话。
将最后一个字符改成了0 也就是'\0'
[解决办法]标准 C 库,不会有功能问题。
fgets(word,99,wordFile)
[解决办法]我知道什么问题了
因为最后一行没有换行符,所以
word[strlen(word) - 1] = '\0';
这句话把J给删掉了。
难道类似情况都要给最后一行加个换行符么?
[解决办法]
int main()
{
FILE *wordFile = fopen("D:/word.txt","r");
char word[100] = {0};
while (fgets(word,100,wordFile))
{
// word[strlen(word) - 1] = '\0';
NSLog(@"%s is %d character long",word,strlen(word));
memset(word, 0, 100);
}
fclose(wordFile);
return 0;
}
[解决办法]该回复于2012-08-27 14:22:33被版主删除
[解决办法]呃,这样貌似不行的
那句注释掉的结果就是,除了最后一行,每一行的长度都+1了
[解决办法]哎,LZ大人,你想干嘛的呢?
回车换行也是character啊,只是不可见而已。这样计算出来的就是实际数据长度。
如果你非要把回车换行过滤掉,也没有什么不可以:
按上面的回复,每一行(除了最后一行)最后一个应该是'\n';
word[strlen(word) - 1] = '\0';
这句改成下面的不就可以了:
if ( '\n' == word[strlen(word) - 1]
[解决办法] '\r' == word[strlen(word) - 1] )
{
word[strlen(word) - 1] = '\0';
}
----------------------------------
你当我是刚毕业的大学生啊?
想训就训?
----------------------------------
其实很多工作了很多人的人也很欠训的。
[解决办法]字符串是aaaa的话,我希望长度是4而不是5.
这个我认为工作很多年的人都应该知道。
不然用户会以为长度是错的,你说呢?
你的答案被我否定了,也不要这么气急败坏对我人身攻击。
难道工作期间讨论问题的时候都是你对,不准别人说吗?
当然你要是没工作,我理解你
[解决办法]字符串是"aaaa"的话,长度是4,
现在的问题是,文件里面的每行数据就不是"aaaa",而是"aaaa\n",,
还不明白吗?
还不明白的话看下ASCII码表......
[解决办法] word[strlen(word) - 1] = '\0'; 被覆盖掉了,这个位置就是最后那个字符