Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


strömmar och filhantering(behöver lite hjälp :)

Postades av 2007-01-15 00:01:39 - Pär Hinds, i forum c++, Tråden har 11 Kommentarer och lästs av 1525 personer

Hej har gjort program som ska läsa från en fil och sen skriva ut om man fyller jämt och är över 30 eller om man fyller år år
jag har nått problem med filen som skall läsas ifrån.

det händer inget kommenterar jag bort efter if satsen
så funkar filen om jag tar cout << in_fil.rdbuf()<< endl;
annars så händer det inget alls
här kommer koden
behöver lite hjälp!!!!!
-----------------------------------------

#include <iostream>
#include <fstream>
#include <string> // För string.
#include <ctime> // ctime,
using namespace std ;

int main()
{

string name;
int year,month,day ;
int age;
bool fyller_jamt, fyller_nu;

time_t t = time(0);

tm today = *localtime(&t);
today.tm_mon++;
today.tm_year+=1900;

// Variabler
ifstream in_fil("BDAYS.TXT", ios::in);
// kollar om det är fel på filen
if (in_fil.is_open())
{
// kollar om end of file skiljer från eof.
while (!in_fil.eof())
{
fyller_jamt=false;
fyller_nu=false;
in_fil >> year >> month >> day >> name;
age=today.tm_year-year;
// fyller jämt?
if((age>30) && (age==10*int(age/10)))
fyller_jamt=true;
//fyller nu?
if(month==today.tm_mon)
fyller_nu=true;
// fyller_jamt, inte fyller_jämt
if(fyller_nu||fyller_jamt)
{
cout << day << "/" << month << ", ";
cout << name <<", " << age << " år, ";
if (fyller_jamt)
cout <<"Fyller jämt! ";
if (fyller_nu)
cout << "Fyller nu!";
cout << endl;
}
}


}

else
cout <<"fel fil.";



system("pause") ;
return 0;
}


Svara

Sv: strömmar och filhantering(behöver lite hjälp :)

Postades av 2007-01-15 02:46:12 - Sebastian Andersson

Vad menar du med "fyller jämt"? Jag har inte riktigt förstått vad problemet är då jag tycker din beskrivning av problemet är rätt förvirrande, men som ett tips så ser jag ingen anledning till varför du derefererar pekaren som returneras från localtime().

tm today = *localtime(&t);


tm *today=localtime(&t);


Svara

Sv:strömmar och filhantering(behöver lite hjälp :)

Postades av 2007-01-15 06:57:05 - Pär Hinds

ska testa:a , hmm felet är nått med inläsningen av filen.

japps jag har ett antal kolumner i en txt fil,
som innehåller år mån dag och namn

och som koden är nu så listas inget på skärmen, det blir bara svart, verkar som att den inte kan ta och läsa från filen.


Svara

Sv: strömmar och filhantering(behöver lite hjälp :)

Postades av 2007-01-15 13:06:22 - Sebastian Andersson

Hur ser din BDAY.TXT fil ut? Vad är det för mönster?


Svara

Sv: strömmar och filhantering(behöver lite hjälp :)

Postades av 2007-01-15 18:12:37 - Sebastian Andersson

Jag slängde ihop ett exempel, dock skrivet i C, som jag tror fungerar för mig (den skriver ut texten i konsolen, dock inte säker om den borde göra det).

http://www.un4seen.com/filez/2/filtest2.zip

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

/* från SKAC, (C) 2007 */
UINT freadline(FILE *pFile, char *pszString)
{
	int c;
	UINT i=0;

	while (isspace(c=getc(pFile)));

	if (c==EOF)
		return 0;

	do {
		pszString[i++]=(char)c;
	} while ((c=getc(pFile))!='\n' && c!=EOF);

	pszString[i++]='\0';

	return (i);
}

void main(int argc, char **argv)
{
	FILE *f=fopen("BDAYS.TXT","rb");
	struct tm *today;
	char line[64];
	int year,month,day,age;
	char name[32];
	BOOL fyller_jamt=FALSE,fyller_nu=FALSE;
	time_t t;

	if (!f) {
		printf("fel fil\n");

		return;
	}

	t=time(NULL);
	today=localtime(&t);

	today->tm_mon++;
	today->tm_year+=1900;

	while (freadline(f,line)) {
		sscanf(line,"%04d %02d %02d %s",&year,&month,&day,&name);

		age=today->tm_year-year;

		if ((age>30) && (age==10*(int)age/10)) /* ? */
			fyller_jamt=TRUE;

		if (month==today->tm_mon)
			fyller_nu=TRUE;

		if (fyller_jamt || fyller_nu)
			printf("%02d/%02d, %s %d år %s%s\n",day,month,name,age,fyller_jamt?"Fyller jämt! ":"",fyller_nu?"Fyller nu!":"");
	}

	fclose(f);
	system("pause");
}


<info>
1989 01 14 Sebastian
1957 04 03 Test
</info>

<info>
14/01, Sebastian 18 Õr Fyller nu!
03/04, Test 50 Õr Fyller jõmt! Fyller nu!
Tryck på en valfri tangent för att fortsätta...
</info>


Svara

Sv: strömmar och filhantering(behöver lite hjälp :)

Postades av 2007-01-15 19:01:14 - Pär Hinds

jo det ser ju riktigt som du skrev
så här ser min fil ut, ska testa jag med nu :)

year month day Name
1977 11 04 Pär Hinds
1978 11 18 Peter Boström
1986 05 30 Helena Hansson


det är tab mellan de olika raderna samt mellan slag mellan namn och efternamn



Svara

Sv:strömmar och filhantering(behöver lite hjälp :)

Postades av 2007-01-15 20:00:36 - Sebastian Andersson

Jag testade med din BDAY-data och det fungerade, men efternamnen kom inte med. Det kan lösas genom att lägga till ytterliggare en variabel åt efternamnet...

void main(int argc, char **argv)
{
	FILE *f=fopen("BDAYS.TXT","rb");
	struct tm *today;
	char line[64];
	int year,month,day,age;
	char name[32],name1[32];
	BOOL fyller_jamt=FALSE,fyller_nu=FALSE;
	time_t t;

	if (!f) {
		printf("fel fil\n");

		return;
	}

	t=time(NULL);
	today=localtime(&t);

	today->tm_mon++;
	today->tm_year+=1900;

	while (freadline(f,line)) {
		sscanf(line,"%04d %02d %02d %s %s",&year,&month,&day,&name,&name1);

		age=today->tm_year-year;

		if ((age>30) && (age==10*(int)age/10)) /* ? */
			fyller_jamt=TRUE;

		if (month==today->tm_mon)
			fyller_nu=TRUE;

		if (fyller_jamt || fyller_nu)
			printf("%02d/%02d, %s %s %d år %s%s\n",day,month,name,name1,age,fyller_jamt?"Fyller jämt! ":"",fyller_nu?"Fyller nu!":"");
	}

	fclose(f);
	system("pause");
}


Svara

Sv: strömmar och filhantering(behöver lite hjälp :)

Postades av 2007-01-15 20:33:22 - Pär Hinds

Men ok!! din variant fungerar jag ser ju nu varför mitt inte fungerar.
jag e inte så hajj på c
man jag tror nog att denna räknar igenom filen stämmer det?
/* från SKAC, (C) 2007 */
UINT freadline(FILE *pFile, char *pszString)
{...}
{
int c;
UINT i=0;

while (isspace(c=getc(pFile)));

if (c==EOF)
return 0;

do {...} while ((c=getc(pFile))!='\n' && c!=EOF);
do {
pszString[i++]=(char)c;
} while ((c=getc(pFile))!='\n' && c!=EOF);

pszString[i++]='\0';

return (i);
}


och hur ska jag kunna använda mig av den?
hmm kan ju lägga den i en funktion?
borde ju gå eller?


Svara

Sv:strömmar och filhantering(behöver lite hjälp :)

Postades av 2007-01-15 21:41:38 - Sebastian Andersson

Det är en funktion jag skrev för ett annat projekt i C (SKAC) som läser en linje ur en fil. Du kan nog ta bort den funktionen och använda dig av getline()-funktionen i istream. Jag föredrar C framför C++, men här har du lite kod du kan pröva:

while (!in_fil.eof()) {
	in_fil.getline(line,sizeof(line));

        sscanf(line,"%04d %02d %02d %s %s",&year,&month,&day,&name,&name1);

        age=today->tm_year-year;

        if ((age>30) && (age==10*(int)age/10)) /* ? */
            fyller_jamt=TRUE;

        if (month==today->tm_mon)
            fyller_nu=TRUE;

        if (fyller_jamt || fyller_nu)
            printf("%02d/%02d, %s %s %d år %s%s\n",day,month,name,name1,age,fyller_jamt?"Fyller jämt! ":"",fyller_nu?"Fyller nu!":"");
}


Svara

Sv: strömmar och filhantering(behöver lite hjälp :)

Postades av 2007-01-16 07:11:13 - Pär Hinds

hmm njae nu funkar iallafall nått,
men skriver inte ut nått
för nu går den ner till denna rad
system("pause") ;
så gjorde den inte förrut. suck :(


fick du mitt mail?


Svara

Sv: strömmar och filhantering(behöver lite hjälp :)

Postades av 2007-01-16 19:30:52 - Pär Hinds

japps får inte till det vet inte vad jag ska ta mig till :)


Svara

Sv:strömmar och filhantering(behöver lite hjälp :)

Postades av 2007-01-17 15:49:31 - Sebastian Andersson

Posta din nuvarande kod här så kan jag kolla lite snabbt, har dock rätt ont om tid för tillfället.;)


Svara

Nyligen

  • 21:41 Automotive Services UK
  • 20:44 Erfarenhet av CBD-olja mot sömnpro
  • 12:13 Sex Dolls for Sale
  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 880
27 965
271 776
646
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies