我在学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,却没读到?

解决方案 »

  1.   

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

  2.   

    啊啊啊啊啊啊,做了这些年的java,没想到要从新学C,哎
    来人呐
      

  3.   


    不知道LZ说的是不是其他所有字都正常读取到了,但是唯独只有最后一个J没有读到。
    如果是这么回事的话,应该是因为
     word[strlen(word) - 1] = '\0';这句话。
    将最后一个字符改成了0 也就是'\0'
      

  4.   

    标准 C 库,不会有功能问题。
    fgets(word,99,wordFile)
      

  5.   

    我知道什么问题了
    因为最后一行没有换行符,所以
    word[strlen(word) - 1] = '\0';
    这句话把J给删掉了。难道类似情况都要给最后一行加个换行符么?
      

  6.   


    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;
    }
      

  7.   

    哎,LZ大人,你想干嘛的呢?回车换行也是character啊,只是不可见而已。这样计算出来的就是实际数据长度。如果你非要把回车换行过滤掉,也没有什么不可以:按上面的回复,每一行(除了最后一行)最后一个应该是'\n'; word[strlen(word) - 1] = '\0';这句改成下面的不就可以了:if ( '\n' == word[strlen(word) - 1] || '\r' == word[strlen(word) - 1] )

         word[strlen(word) - 1] = '\0'; 
    }
    ----------------------------------
    你当我是刚毕业的大学生啊?
    想训就训?
    ----------------------------------
    其实很多工作了很多人的人也很欠训的。
      

  8.   

    字符串是aaaa的话,我希望长度是4而不是5.
    这个我认为工作很多年的人都应该知道。
    不然用户会以为长度是错的,你说呢?你的答案被我否定了,也不要这么气急败坏对我人身攻击。
    难道工作期间讨论问题的时候都是你对,不准别人说吗?
    当然你要是没工作,我理解你
      

  9.   

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

  10.   

    字符串是"aaaa"的话,长度是4,
    现在的问题是,文件里面的每行数据就不是"aaaa",而是"aaaa\n",,还不明白吗?还不明白的话看下ASCII码表......
      

  11.   


    你以为用户知道那个看不见的'\n'是什么东西吗
    难道用户输入"aaaa"出来的长度是5,他会觉得是正常的吗
    我都说了 用户用户,我看,不明白的是你吧