首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Iphone >

objective-c的fget()读资料,读出的内容少了

2012-12-16 
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
[解决办法]

引用:
参照我的一篇博文:
http://blog.csdn.net/yang3wei/article/details/7856273

看了,跟我的一样啊
[解决办法]
啊啊啊啊啊啊,做了这些年的java,没想到要从新学C,哎
来人呐
[解决办法]
引用:
引用:
参照我的一篇博文:
http://blog.csdn.net/yang3wei/article/details/7856273

看了,跟我的一样啊

你吧我博文里面的代码拿过去试一下,我估计是你这写法有问题,
不能指望自己不动一点儿脑筋和手就吧问题解决吧?
[解决办法]
引用:
引用:

引用:
参照我的一篇博文:
http://blog.csdn.net/yang3wei/article/details/7856273

看了,跟我的一样啊

你吧我博文里面的代码拿过去试一下,我估计是你这写法有问题,
不能指望自己不动一点儿脑筋和手就吧问题解决吧?

写法没有问题,我也动脑筋和手了
[解决办法]
你当我是刚毕业的大学生啊?
想训就训?
引用:
引用:

引用:
参照我的一篇博文:
http://blog.csdn.net/yang3wei/article/details/7856273

看了,跟我的一样啊

你吧我博文里面的代码拿过去试一下,我估计是你这写法有问题,
不能指望自己不动一点儿脑筋和手就吧问题解决吧?

[解决办法]
引用:
我在学objective-c基础教程的例子。例子如下:
int main()
{
    FILE *wordFile = fopen("D:/word.txt","r");
    char word[100];
    while (fgets(word,100,wordFile))
    {
        word[strlen(word) - 1] = '\0';
  ……


不知道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被版主删除
[解决办法]
引用:
C/C++ code

int main()
{
    FILE *wordFile = fopen("D:/word.txt","r");
    char word[100] = {0};
    while (fgets(word,100,wordFile))
    {
        // word[strlen(word) - 1] = '\0';
        NSLog(@……

呃,这样貌似不行的
那句注释掉的结果就是,除了最后一行,每一行的长度都+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'; 
}


----------------------------------
你当我是刚毕业的大学生啊?
想训就训?


----------------------------------


其实很多工作了很多人的人也很欠训的。






[解决办法]
引用:
哎,LZ大人,你想干嘛的呢?

回车换行也是character啊,只是不可见而已。这样计算出来的就是实际数据长度。

如果你非要把回车换行过滤掉,也没有什么不可以:

按上面的回复,每一行(除了最后一行)最后一个应该是'\n';

 word[strlen(word) - 1] = '\0';

这句改成下面的不就可以了:

if ( '\n' == word[strlen……

字符串是aaaa的话,我希望长度是4而不是5.
这个我认为工作很多年的人都应该知道。
不然用户会以为长度是错的,你说呢?

你的答案被我否定了,也不要这么气急败坏对我人身攻击。
难道工作期间讨论问题的时候都是你对,不准别人说吗?
当然你要是没工作,我理解你
[解决办法]
引用:
引用:
哎,LZ大人,你想干嘛的呢?

回车换行也是character啊,只是不可见而已。这样计算出来的就是实际数据长度。

如果你非要把回车换行过滤掉,也没有什么不可以:

按上面的回复,每一行(除了最后一行)最后一个应该是'\n';

word[strlen(word) - 1] = '\0';

这句改成下面的不就可以了:

if ( '\n'……



字符串是"aaaa"的话,长度是4,
现在的问题是,文件里面的每行数据就不是"aaaa",而是"aaaa\n",,

还不明白吗?

还不明白的话看下ASCII码表......




[解决办法]
 word[strlen(word) - 1] = '\0'; 被覆盖掉了,这个位置就是最后那个字符

热点排行