Bellekte iki ardışık çizgi tutarken her satırdaki tüm girişi bir satırdan okur ve her satırı standart çıktıya yazdırırsa, void process_file(FILE* f)
işlevini yazmam gerekir. önceden okunan çizgiye eşit değil.Bir önceki satıra eşit değilse her satırı yazdırın
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MY_MAX_LINE 999
void process_file(FILE* f)
{
char firstLine[MY_MAX_LINE + 1];
char secondLine[MY_MAX_LINE + 1];
while (1)
{
if (!fgets(firstLine, sizeof(firstLine), f))
break;
puts(firstLine);
if (!fgets(secondLine, sizeof(secondLine), f))
break;
if (strncmp(firstLine, secondLine, sizeof(firstLine)))
puts(secondLine);
}
if (!feof(f))
perror("Problem reading from file"), exit(1);
}
int main(int argc, char **argv)
{
FILE *f = fopen("text.txt", "r");
if (!f)
perror("text.txt"), exit(1);
process_file(f);
fclose(f);
return 0;
}
Bunu doğru şekilde yapıp yapmadığımı ve bu soruyu soruyorsa, bilmek istiyorum.
Teşekkürler!
Kullanıcı, bir satırda ve sonra aynı satırı iki kez yazdığında kodunuz çalışmaz. Sadece ilk ve ikinci satırlar aynıysa veya üçüncü ve dördüncü, beşinci ve altıncı, vb. – kichik
Hayır, doğru değil. Örneğin, giriş "ABBC" ise, çıktı "ABC" olmalıdır, ancak kodunuz ABBC'yi çıkarır çünkü yalnızca "A" ile "B" yi ve ikinci "B" yi "C" olarak karşılaştırır. – user3386109
Lütfen bkz. [Sor]. Programı çalıştırdığınızda ne alacaksın? – Olaf