Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-02-2008, 08:35   #1
braian
Member
 
L'Avatar di braian
 
Iscritto dal: Apr 2007
Messaggi: 153
[c]errore di i/o in ritorno da funzione

Il seguente codice mi va in segmentation fault al momento del ritorno dalla finzione "createf" richiamata nel main.
Ho fatto il debugger con DDD e mi pare che vada bene tranne che quando dovrebbe ritornare 0 e invecie va in seg fault.
Qualcuno può aiutarmi?
Codice:
 
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <stdarg.h>
#include <time.h>		 //per la gestione del time
#include <stdio.h>



int createf(const char *path,const char *mode,char* fmt,...) //funzione con numero di parametri variabile, i primi 2 servono per la fopen, il terzo è una stringa di formato per i parametri variabili. E'un errore nn passare la stringa di formato, al limite passarla vuota per non inserire metadati. Eventuali parametri in più rispetto a quelli specificati nella stringa di formato vengono ignorati.
{
	va_list ap;	//il puntatore a argomento 
	FILE* file; //il file da creare o modificare
	FILE* filesave=fopen("save.sav","a"); //il file di salvataggio delle associazioni
	
	int lung;
	char str[1];
	char* stringa;
	char* sval;
	float fval;
	struct tm * t;
	time_t tx;
	
	if ((file=fopen(path, mode))==NULL)
	{
		printf("errore1");
	}
	fprintf(filesave,"%s,",path);
	va_start(ap,fmt);
	while(*fmt!='\0')
	{
		if(isalpha(*fmt)!=0)
		{
			lung=strcspn(fmt," ");
			stringa=strncpy(str,fmt,lung);
			if(fputs(stringa,filesave)==EOF) //scrive il nome del metadato
			{
				printf("errore2");//gestione errore in fputs
			}
			fmt=fmt+lung; //fmt punta al successivo formato di tipo metadato(%s,%n..)
			if(isspace(*fmt)==0)
			{
				printf("errore3");//trattamento errore, non c'è lo spazio dopo il nome di metadato
			}
			fmt++;
			if(*fmt=='%')
			{
				fmt++;
				switch(*fmt)
				{
					case 's':
						sval=va_arg(ap,char*);
						fprintf(filesave,"%s,",sval);
						fmt++;
						break;
					case 'n':
						fval=va_arg(ap,double);
						fprintf(filesave,"%f,",fval);
						fmt++;
						break;
					case 'd':
						t=va_arg(ap,struct tm*);
						tx=mktime(t);
						if (tx == (time_t) (-1))
      					{
      						printf ("Errore! %ld\n", (long int) tx); //trattamento errore data da rivedere
     					}
    					fprintf(filesave,"%d/%d/%d,",t->tm_mday,t->tm_mon+1,t->tm_year+1900);
    					fmt++;
						break;
					default :
						printf("errore4");//trattamento errore formato sconosciuto
						break;
				}
			}
			else
			{
				printf("errore5");//gestione errore, non c'è % dopo il nome del metadato e lo spazio
			}
		
		}
		
	}
	fprintf(filesave,"\n");
	
	return 0;
	
}



int createfwm(const char *path,const char *mode)
{
	FILE* file;
	FILE* filesave=fopen("save.sav","a"); //il file di salvataggio delle associazioni
	if ((file=(fopen(path, mode)))==((FILE*)NULL))
	{
		return EOF; //gestione errore
	}
	fprintf(filesave,"%s\n",path);
	if(fclose(filesave)==EOF)
	{
		return EOF; //gestione errore
	}
	return 1;
}

int main()
{
	printf("tuttook0\n");
	struct tm* tempo;
	tempo->tm_year=150;
	tempo->tm_mday=15;
	tempo->tm_mon=5;
	char car;
	int a=createfwm("prova.pro","w");
	int b=createfwm("provi.pri","w");
	int c=createfwm("prove.pre","w"); 
	printf("tuttook1");
	int d=createf("provu.pru","w","proprietario %srevisione %ndata %d","paolo",5,tempo);
	printf("tuttook2");
	FILE* fil=fopen("save.sav","r");
	while((car=fgetc(fil))!=EOF)
	{
		if(car=='\0')
		printf("errore");
	}
	printf("tuttook");
	fclose(fil);
	return 1;
}

L'errore che DDD mi da è:
Error accessing memory address 0x86f6972: Input/output error
braian è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
Amazon fa impazzire i prezzi: ecco i 5 s...
iOS 26 arriva oggi: 8 motivi per aggiorn...
VMSCAPE, nuova variante Spectre: vulnera...
Meta Quest 3 da 512 GB scende ancora: or...
Xiaomi lancia un nuovo e-reader con Andr...
iPhone 16e a meno di 600€ su Amazon: l'a...
NVIDIA arruola Colin King: Intel perde u...
GeForce RTX 6090: Rubin CPX potrebbe ess...
Iliad: si consolida la partnership tecno...
Il SoC a 2 nm di Samsung non sfigura nel...
Prezzo shock per i Galaxy Buds FE + nuov...
Il nuovo SoC di Qualcomm vuole stupire: ...
Offerta lampo per pulire l'auto: aspirap...
I robotaxi di Amazon entrano in azione: ...
ECOVACS DEEBOT T50 PRO OMNI Gen2 domina ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:08.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v