Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-08-2007, 17:18   #1
hurricane81
Junior Member
 
Iscritto dal: Aug 2007
Messaggi: 7
[c] prendere stringa in input da tastiera

Ciao a tutti! Ho questo programma che prende in input una frase e la restituisce senza le s; esiste una frase di default e ho provato ad arricchirlo con la possibilità di scegliere la frase da tastiera; però non funziona: quando scelgo di cambiare frase, mi viene visualizzata la riga "inserisci nuova frase", quindi una riga bianca e poi il programma termina. dove sbaglio? (non posso usare scanf al posto di gets perchè devo prendere una frase, non una parola!)
Codice:
#include <stdio.h>
#include <string.h>
#include <stdlib.h> 

char * cancella(char *str, char c)
{
   int i, j=0;
   char *app;
   app=(char*) malloc(strlen(str)+1);
   for (i=0; i<= strlen(str); ++i)
      if (str[i]!=c)
         app[j++]=str[i];
   str=(char*) malloc(strlen(app)+1);
   strcpy(str, app);
   free(app);
   return str;
}

main()
{  
   char x[2], y[100];
   char a[]="s", b[]="n";
   
   char *s="sschissa se ss s sfunzionassssss";
   printf("La frase da esaminare è: %s\n", s);
   printf("Vuoi cambiare la frase? s/n\n");
   scanf("%s", x);
   if (strcmp(x, b)==0)
      printf("%s\n", cancella(s, 's'));
   else if (strcmp(x, a)==0)
   {
      printf("Scrivi la nuova frase:\n");
      gets(y);
      printf("%s\n", cancella(y, 's'));
   }
   else
      printf("Opzione non valida\n");
}
Ho quindi cercato di sostituire gets() con il seguente codice (definendo BUFSIZE=512 e naturalmente passando buffer e non y alla funzione cancella), ma il problema permane esattamente uguale!
Codice:
char buffer[BUFSIZE];
  		char *p = NULL;
  		p = fgets (buffer, BUFSIZE, stdin);
  		if (!p)
    	{
      	fprintf(stderr, "Impossibile leggere la stringa (errore o EOF inatteso)\n");
      	exit (1);
    	}
  		/* Rimuove il newline finale o termina forzatamente la stringa */
  		p = (char *) memchr (buffer, '\n', BUFSIZE);
  		if (p == NULL)
    	buffer[BUFSIZE - 1] = '\0';
  		else
    	*p = '\0';
__________________
--> Progetto Wallpaper: centinaia di sfondi free (simpsons, dragonball, animali, sport, arte...)

Ultima modifica di hurricane81 : 30-08-2007 alle 17:22.
hurricane81 è offline   Rispondi citando il messaggio o parte di esso
Old 31-08-2007, 10:54   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Ti posto la "mia" versione.

Codice:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int input_line (char *buf, int bufsize)
{
    char *p;

    if (fgets (buf, bufsize, stdin) == NULL)
        return 0;
    if ((p = strchr (buf, '\n')) != NULL)
        *p = '\0';

    return 1;
}


char *strip_char (char *str, char c)
{
    char *out;
    int   i, j, l = strlen (str);

    if ((out = (char*) malloc (l+1)) == NULL)
        return NULL;

    for (i = j = 0; i < l; i++)
        if (str[i] != c)
            out[j++] = str[i];

    out[j++] = '\0';

    if ((str = (char*) realloc (out, j)) != NULL)
        out = str;

    return out;
}


int main (void)
{
    char  buf[80];
    char *def = "sssprova sseliminaziones caratterisss";
    char *str = NULL;

    printf ("La frase da esaminare e`: \"%s\"\n", def);
    printf ("Vuoi cambiare la frase? (s/n): ");

    if (input_line (buf, sizeof (buf)))
    {
        if (strcmp (buf, "s") == 0)
        {
            printf ("Scrivi la nuova frase: ");

            if (input_line (buf, sizeof (buf)))
                str = buf;
        }
        else if (strcmp (buf, "n") == 0)
            str = def;
        else
            printf ("Opzione non valida\n");
    
        if (str != NULL)
        {
            str = strip_char (str, 's');

            if (str != NULL)
                printf ("Frase elaborata: \"%s\"\n", str);
        }
    }

    return 0;
}
Come vedi, invece di usare un mix di scanf/gets (che sono molto problematiche) ho definito una semplice funzione di input di una riga, molto più comoda.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Cloud sovrano: l'approccio di Broadcom c...
HONOR conferma l'arrivo in Italia di Mag...
La Cina sotto pressione impone maniglie ...
OpenAI integra le app in ChatGPT per tra...
NVIDIA sarebbe pronta a tagliare la prod...
Prezzo minimo storico per iPhone 16 Pro:...
Riot Games scopre una falla nei BIOS che...
Beats in super offerta su Amazon: aurico...
Batterie elettriche, Samsung SDI e Stell...
Clivet presenta Fullness, la pompa di ca...
SpaceX lancerà 167 razzi spaziali...
Yakuza Kiwami 3 e Dark Ties protagonisti...
Privacy a rischio: ecco la VPN che regis...
SpaceX ha annunciato che un satellite St...
ASUSTOR presenta i nuovi NAS Lockerstor ...
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: 00:16.


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