【发布时间】:2020-03-22 20:59:14
【问题描述】:
我正在尝试一次从用户那里获取多行文本并逐行处理它,但是在从剪贴板插入控制台后,需要按两次 ENTER 才能发送并继续。 预期行为:CTRL+V 然后 ENTER 执行程序。 实际行为:CTRL+V 插入文本,ENTER 开始新行,第二个 ENTER 发送文本。
处理输入的函数:
char* getNewLine(bool* finish){
char* string;
string = malloc(sizeof(char));
string[0]='\0';
int c;
int i = 0;
while( (c = getchar()) != '\n'){
string = realloc(string, sizeof(char)*(i+2));
string[i] = (char)c;
string[i+1] = '\0';
i++;
}
if(i == 0){ //if last line was empty, stop while loop in main
*finish = true;
}
return string;
}
主程序:
int main(){
bool finish = false;
int line_count = 0; //Number of lines found
int good_count = 0; //Lines matches
char* line;
while(!finish){ //Read console line-by-line
line = getNewLine(&finish);
if(!finish){
if(checkString(line)){ //checkString returns true, if string matches some conditions
good_count++;
}
line_count++;
}
free(line);
}
printf("%d/%d\n", line_count, good_count);
return 0;
}
【问题讨论】:
标签: c input console-application