用回车来判断
英文的ASCII码小于128

解决方案 »

  1.   

    \r\n,\r也可以。
    你可以一直读数据,直到遇见了\r\n,或者\r就停止。
      

  2.   

    Windows下文本文件的一行的结束符是"\r\n"。一般情况下如果有中文的话,你只要判断字符的ASCII值不小于0x20,要是小于这个值,就看看是不是一行的结束符就行了。因为中文的ASCII值会大于0xA0的也就是大于128了。
      

  3.   

    如果一个字符一个字符的读的话,
    好像监测不到'\r\n'
    是否我的写入文件错了。
    但是打开我的文件看的时候,
    好像没有错误。写入正确的。
    是否写入需要加入一些控制的东西。
    我用fread(...)读入一些数据到一个buffer 中时候,没有问题。
    但是一个字符一个字符的读入就显示是乱码?为何?
    请多指教。
      

  4.   

     回车换行的键值是0x0A和0x0D,汉字的是大于等于0xA0,知道了这个就ok啦~~我也是刚刚才知道的,前几天刚编过个程序~~~~
      

  5.   

    LONG main()
    {
    FILE *stream ;
    CHAR  buffer3[256]; stream = fopen("F:\\MyEditFile\\Test\\Asctest\\Asctest.txt","r");  
      
    fseek(stream,0,SEEK_SET); 
    CHAR curChar;
    int tpNum=0;
        curChar=fgetc(stream);
    while((curChar !='\0x0D')||(curChar != EOF ))
    {
    curChar = getc(stream);
    buffer3[tpNum++] =curChar;
    tpNum++;
    if(tpNum==150) break;
    }
    buffer3[tpNum] ='\0';
    // cout<<"content of buffer :"<<buffer3<<endl; 
    printf("%s",buffer3);
    fclose(stream );
    return TRUE;
    }上面的这段程序有何问题?
    为何读不出中文?(显示的全是乱码)
    请多指教。
      

  6.   

    你可以用RichEdit控件,它有GetLine函数。
      

  7.   

    用mbstowcs进行转化一下数据转换
      

  8.   

    你读取的文件数据正确吗?
    调试一下,检查一下你的文件流,是不是你想要显示的值~~你的while判断的是如果遇到回车就跳出,是吗?
      

  9.   

    #include "stdio.h"
    #include <conio.h>
    #include <ctype.h>
    #include <stdlib.h>
    #include <memory.h>void main()
    {
    FILE *stream ;
    char buffer3[10240];
    char curChar;
    int tpNum=0; stream = fopen("D:\\My Document\\追求美眉秘诀.txt","r");   
    fseek(stream,0,SEEK_SET); 

    curChar=fgetc(stream);
    while((curChar !='\0x0D')&&(curChar != EOF ))
    {
    buffer3[tpNum++] =curChar;
    curChar = fgetc(stream);
    if(tpNum==10239) 
    break;
    }
    buffer3[tpNum] ='\0';
     
    wchar_t *pwc=(wchar_t*)malloc(10240);
    memset(pwc,0,1024);
    mbstowcs(pwc, buffer3, 10240 );
    wprintf(L"%s",pwc);
    free((void*)pwc);
    fclose(stream ); 
    return ;
    }
    运行正确。
      

  10.   

    一行的文字,不需要这么大的 buffer 吧。
    何况即使buffer 太小,那么,只有最后 才可能显示乱码吧??
      

  11.   

    comingtrue(comingtrue)::
    请问一下: 
    你的处理的办法是把文件一下完全读入,然后,进行操作,对吗???
      

  12.   

    我看用richedit就可以实现你的功能了。
      

  13.   

    请教一下:为何在一个buffer 判断某一行时候,有问题?
    能否告诉我怎样判断?
    就如:在 comingtrue(comingtrue)的程序中 buffer3 中
    判断 并找出第二行的位置?
      

  14.   

    CStdioFile file;
    file.Open(fname,CFile::modeRead|CFile::typeText);
    file.ReadString(lineString);
    while(file.ReadString(lineString))
    {
                   .....
    }
      

  15.   

    用fgets(..)
    很容易啦 !
    可直接读取一行。
    我最近才看到。
    不过多谢各位啦。
      

  16.   

    int tpNum=0;
        curChar=fgetc(stream);
    while((curChar !='\0x0D')&brvbar;&brvbar;(curChar != EOF ))
    {
    buffer3[tpNum] =curChar;
    curChar = getc(stream);
    tpNum++;
    if(tpNum==150) break;
    }
    怎么会是[tpNum++]呀
    读文件的付值的顺序也错了
    呵呵
      

  17.   

    1.用CHARNEXT函数,可以自动区分汉字和ASCII;
    2.while(tem[i]){
      if((tmp[i] & 128 )==1) //是汉字
      { 
         i+=2;
       }
      else                 //ascii
      {
       if(tmp[i]=='\r'){   //假设换行总是\r\n,单个话再加判断
    //      
           //换行
          }
        i++;
       }
      }
      

  18.   

    既然已经用了C++,为什么不用getline?fstream in("file.txt");
    string line;
    int linecount = 1;
    for(int count=1;count!=X;count++)
    {
       getline(in,line,'\n');
    }