关于 fegts() 丢每行 首个字符的有关问题

关于 fegts() 丢每行 首个字符的问题
大家好,小弟用 fgets 处理 .cpp 文件 内容的时候 用到 fgets, 但不知什么原因,总是出现 某些行首个 字符莫名其妙丢失的问题。

比如 原文件 相邻两行 : void move();
                                        void start_move();


处理过后为:void move();
                      oid start_move();


代码如下:

char buffer[256];

fgets( buffer, 256, tempfp); // temfp为文件指针。

请教各位,这是哪里出现的问题,是 buffer 的问题嘛? 换用 char *buffer; buffer = new char[256]; 但是还是存在 丢字符现象。
------解决思路----------------------
将对fgetc的调用删掉!
while (1) {
    fgetpos( tempFp, &pos_here);

    if (NULL==fgets( buffer, 256, tempFp )) break;

    robot_string = buffer;

    memset( buffer, 0, 256 );

    if ( robot_string.find( "moveRobot" ) == robot_string.npos
     
------解决思路----------------------
  robot_string.find( "void" )      != robot_string.npos ) {
        fprintf( file->FP_fp, "%s\n", robot_string.c_str() );
    } else {
        break;
    }
}


------解决思路----------------------

while (fgets(buffer, 256, tempFp) != NULL) {
    // 这句有什么用? fgetpos(tempFp, &pos_here);

    // fgets(buffer, 256, tempFp);

    robot_string = buffer;

    // 这句有什么用?memset(buffer, 0, 256);

    if (robot_string.find("moveRobot") == robot_string.npos 
------解决思路----------------------

        robot_string.find("void") != robot_string.npos)
    {
        fprintf(file->FP_fp, "%s\n", robot_string.c_str());
    }

    else {
        break;
    }
}