резюме: система («очистить»);не работает должным образом.
Я использую gcc, версию Ubuntu 18.04 LTS для программирования на C.
что я намеревался было «прочитать каждое слово и распечатать из двух текстовых файлов. После окончания чтенияфайл, задержка 3 секунды и стирание терминала «
», чтобы я сделал два текстовых файла и с помощью системы («очистить»);стереть терминал.
вот целый код.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
void printFiles(char *file1,char *file2,char *change1, char *change2){
FILE *f;
char *text = malloc(sizeof(char)*100);
f=fopen(file1,"r");
system("clear");
//while(!feof(f)){
while(EOF!=fscanf(f,"%s",text)){
//fscanf(f,"%s", text);
printf("%s ",text);
//usleep(20000);
}
//sleep(3);
fclose(f);
printf("\n");
//all comment problems are appear here. and if I give delay, such as usleep() or sleep, delay also appear here. Not appear each wrote part.
f=fopen(file2,"r");
//while(!feof(f)){
while(EOF!=fscanf(f,"%s",text)){
if(strcmp(text,"**,")==0){
strcpy(text,change1);
strcat(text,",");
}
else if(strcmp(text,"**")==0){
strcpy(text,change1);
}
else if(strcmp(text,"##.")==0){
strcpy(text,change2);
strcat(text,".");
}
else if(strcmp(text,"##,")==0){
strcpy(text,change2);
strcat(text,",");
}
printf("%s ",text);
//usleep(200000);
}
fclose(f);
free(text);
sleep(3); //here is problem. This part works in the above commented part "//all comment problems are appear here."
system("clear"); //here is problem. This part works in the above commented part "//all comment problems are appear here."
}
int main(){
char file1[100] = "./file1.txt";
char file2[100] = "./file2.txt";
char change1[100]="text1";
char change2[100]="text2";
printFiles(file1,file2,change1,change2);
return 0;
}
Мне очень жаль, имена файлов и переменных изменены из-за политики.Кроме того, содержимое файла также не может быть загружено.
Я не могу найти, какая часть прерывает процедурно-ориентированное программирование.Я думаю, что это была ошибка компилятора, потому что использование одного файла для чтения и system(clear);
работает хорошо.
Я также делаю две точечные переменные, такие как 'FILE * f1;ФАЙЛ * f2;f1 = Еореп (file1);f2 = fopen (file2) ... `, но результат тот же.
Это ошибка компилятора?Если это так, что я должен сделать для решения этой проблемы?Спасибо.