Witam, dawno już nic nie napisałem i ciężko mi poradzić sobie z prostym zadaniem, tak więc proszę o pomoc, treść:
Dany jest plik tekstowy "smerfy.txt". Czytaj z
pliku linia po linii i wyświetl na ekranie te, które nie
zaczynają się od znaku '$'.
0
2
for line in file
if !(line startsWith '$')
putL line
0
Z czym masz problem?
0
Napisałem, żeby czytał linia po linii i nie wiem jak zrobić żeby omijał linijki zaczynające się od $
1
Musisz sprawdzić, czy zaczynają się od $
i, jeśli tak, ominąć je. Zaprezentuj może kod.
0
#include <stdio.h>
#include <stdafx.h>
int main()
{
char linia[255];
FILE* plik;
plik = fopen("smerfy.txt","r");
while(fgets(linia,255,plik)!=NULL)
{
if(fgets(linia,EOF,plik)!='$')
printf("%s",linia);
}
fclose(plik);
getch();
return 0;
}
1
if(fgets(linia,EOF,plik)!='$')
wracamy do dokumentacji: http://en.cppreference.com/w/c/io/fgets oraz do podstaw. W C porównujesz char*
i int
, w C++ takie coś się nie skompiluje.
Poza tym, obecną linię już wczytałeś. Sprawdź jej pierwszy znak zamiast pobierać następną.
0
if(linia !='$')
coś takiego?
1
Nie. Zastanów się czym jest linia
(tablicą znaków/wskaźnikiem na jej początek) i czym jest '$'
(znakiem/liczbą typu int
) i jaki sens ma porównywanie tych wartości.
0
Rozwiązanie:
#include <stdio.h>
#include <stdafx.h>
int main()
{
char linia[255];
FILE* plik;
plik = fopen("smerfy.txt","r");
while(fgets(linia,255,plik)!=NULL)
{
if(linia[0] != '$')
printf("%s",linia);
}
fclose(plik);
getch();
return 0;
}