小编mua*_*loc的帖子

为什么我需要两次键入Ctrl-D来标记文件结尾?

char **query; 
query = (char**) malloc ( sizeof(char*) );

int f=0;
int i=0,j=0,c;


while((c=getchar())!=EOF)
{      
    if(!isalpha(c))
        continue;

    if(f==1)
        query=(char**) realloc(query,(i+1)*sizeof(char*));

    query[i]=(char*) malloc(sizeof(char));
    query[i][j]=c;
    j++;


    while( (c=getchar())!=EOF&&c!=' '&&c!='\t' )
    {      

        query[i]=(char*) realloc(query[i],(j+1)*sizeof(char));

        query[i][j]=c;
        ++j;
    }   

    query[i][j]='\0';
    printf("%s\n",query[i]);
    if(c==EOF){

        break;
    }   

   ++i;
   f=1;
   j=0;
}
Run Code Online (Sandbox Code Playgroud)

我希望上面的代码片段读取由空格和制表符分隔的字符串行,直到ONE EOF,但它需要2个EOF才能结束循环.此外,字符串只能由字母字符组成.

我在约2天内挣扎.请提供一些反馈.

编辑:最有可能的原因是我写完最后一个字符串而不是输入键后我按CTRL + D键,但现在我按Enter键然后按CTRL + D,它按预期工作.但是,在按下最后一个字符串后按CTRL + D后,如何将其更改为完成?

c eof getchar

14
推荐指数
1
解决办法
5275
查看次数

OpenCV 3.1中的Imgproc.copyMakeBorder?

我需要OpenCV Java 2.4.9和3.1的一些方法,但3.1版本Imgproc类没有copyMakeBorder()方法,而它存在于2.4.9版本中.请注意,如果我只选择仅将其中一个添加为具有某些缺陷的库,则可以成功运行它们.那么,有没有办法可以同时使用它们?

java eclipse opencv opencv3.1

0
推荐指数
1
解决办法
1759
查看次数

标签 统计

c ×1

eclipse ×1

eof ×1

getchar ×1

java ×1

opencv ×1

opencv3.1 ×1