Originariamente Scritto da Darkito
Visualizza Messaggio
Annuncio
Collapse
No announcement yet.
Programmare in C++
Collapse
X
-
Originariamente Scritto da Smallman_647 Visualizza MessaggioNo, intendevo che while(ok) a quale condizione corrisponde?
Comment
-
Originariamente Scritto da Albyx Visualizza MessaggioApprofitto del topic.
C'è un modo per sapere (sempre in C) il numero di righe di un file di testo?sigpic
stupid sexy greedo butt
Comment
-
Originariamente Scritto da Black Ghost Visualizza MessaggioFile di testo o testo del programma?sigpic
Comment
-
Puoi usare la funzione fgets, che immagazzina in un buffer (dichiarato in precedenza) tutti i caratteri che legge da stream (fino alla dimensione massima del buffer o fino a fine file). Dopodichè scorri il buffer e vedi quanti \n ci sono. Le righe saranno il numero di '\n' +1.
Un programma che conta le righe è il seguente:
Spoiler:#include <stdio.h>
#include <stdlib.h>
int conta (char * filename)
{
int i, cont=0;
char buffer[100];
FILE *f=fopen(filename,"r+");
if(!f)
return -1;
while(!feof(f))
{
fgets(buffer,100,f);
for(i=0;buffer[i]!='\0';i++)
if(buffer[i]=='\n')
cont++;
}
return cont;
}
int main()
{
char filename[10];
printf("\nInserisci il nome del file: ");
scanf("%s",filename);
printf("Nel file ci sono %d righe.",conta(filename)+1);
}~Pray, saviour\Dream, Child of Prayer\Forever and ever\Bring us peace~
sigpic
Comment
-
Grazie mille Naked, ora però ho bisogno di un altro aiuto.
Ho fatto questo programma che dovrebbe leggere da un file "dati" (che gli passo come argomento) e da questi dati deve leggere delle righe, fare un operazione e stampare il risultato su un file esterno, che gli passo sempre come argomento:
La prima riga contiene un operatore (+|-|*|/)
La seconda riga contiene i due numeri con cui deve fare l'operazione.
La terza riga un altro operatore.
La quarta riga altri due numeri.
... e così via.
[CODE]//---------------------------------------------------------------------------
#pragma hdrstop
#include <stdio.h>
#include <conio.h>
#include "funzioni.h"
//---------------------------------------------------------------------------
static float a;
static float b;
static float ris;
static char operatore[3];
FILE *ingresso;
FILE *uscita;
#pragma argsused
int main(int argc, char* argv[])
{
int fine=0;
int var=1;
int ecc=0;
while(fine<4){
while(var==1){
fine++;
ingresso=fopen(argv[1], "r");
var=fscanf(ingresso,"%s",operatore);
if(operatore[0]=='Q'){
return 0;
}else{
if(operatore[0]!='+'&&operatore[0]!='-'&&operatore[0]!='*'&&operatore[0]!='/'){
return 0;
}else{
var=0;
}
}
}
while(var==0){
ecc=fscanf(ingresso, "%f %f",&a,&b);
if(ecc==0){
var=0;
}else{
if(operatore[0]=='/'&&b==0){
return 0;
}else{
var=1;
}
}
}
fclose(ingresso);
switch(operatore[0]){
case'+':
ris=somma(a,b);
break;
case'-':
ris=differenza(a,b);
break;
case'*':
ris=prodotto(a,b);
break;
case'/':
ris=divisione(a,b);
break;
}
uscita=fopen(argv[2],"w");
fprintf(uscita, "%f", ris);
}
fclose(uscita);
return 0;
}
//---------------------------------------------------------------------------
[/CODE]
Il problema è che legge la riga 1, la riga 2, scrive il risultato e poi torna a leggere la riga 1 e la riga 2.
L'altro problema è che scrive sempre sulla stessa riga.
Avete idea di come risolvere?
Scusate la nabbezza, ma ho iniziato a scrivere in C da poco e ho bisogno di molti chiarimentisigpic
Comment
Comment