[RISOLTO] Warning function 'ispunct'

di
Anonimizzato10896
il
3 risposte

[RISOLTO] Warning function 'ispunct'

Salve a tutti!
All'interno di un progetto più grande ho bisogno di filtrare l'input ed eliminare eventuali segni di punteggiatura.
Ho pensato di utilizzare la funzione 'ispunct' ed in effetti funziona correttamente.

Il compilatore però mi restituisc eil seguente warning:
gcc -Wall "test.c" -o "test" (nel direttorio: /home/ananke/Scrivania)
test.c: In function ‘input’:
test.c:10:3: warning: implicit declaration of function ‘ispunct’ [-Wimplicit-function-declaration]
Compilazione terminata correttamente.
Questo non compromette l'esecuzione ma mi piacerebbe capire come mai incontri quetso warning. Googolando ho visto che, in diversi siti quali ad esempio indichino che la funzione 'ispunct' fa parte di <stdio.h>. Eppure anche avendolo incluso mi da il warning.

Cos'altro è necessario che includa?
Grazie resto in attesa

Parte di codice incriminata:
#include <stdio.h>
#include <string.h>

void input(char *data) {
	int i, ii;
	printf("\n\t>>> ");
	fgets(data,1024,stdin);
	data[strlen(data)-1] = '\0';
	for(i=0;i<strlen(data);i++) {
		if(ispunct(data[i])) {
			data[i] = data[i + 1];
			for(ii=i+1;ii<strlen(data);ii++)
				data[ii] = data[ii + 1];
			i--;
		}
	}
}


int main() {
	char data[1024];
	while(1) {
		input(data);
		if (!strcmp(data, "quit"))
				break;
		else if (!strcmp(data, "test;"))
			printf("\nFAIL!\n");
		else if (!strcmp(data, "test"))
			printf("\nWIN!\n");
		else
			printf("\n%d %s ...\n", strlen(data), data);
	}
	return 0;
}

3 Risposte

  • Re: [RISOLTO] Warning function 'ispunct'

    Per evitare la segnalazione ma, soprattutto, per fa si che il compilatore possa controllare se una funzione viene chiamata con il numero ed il tipo corretto di parametri E' NECCESSARIO che la funzione venga PRIMA dichiarata: cioe' venga definita la sua 'signature'

    E questo come si fa?
    Dove sono le signature delle funzioni di libreria?
    Che cosa serve il file con estensione ".h"?
  • Re: [RISOLTO] Warning function 'ispunct'

    Non so dove hai trovato ma la funzione che tu usi si trova in <ctype.h>...In questo modo dovresti eliminare il warning

    http://www.cplusplus.com/reference/cctype/ispunct
  • Re: [RISOLTO] Warning function 'ispunct'

    Perfetto grazie a tutti e due.

    Sapevo che mi mancava un file .h ma non riuscivo a capire quale.
Devi accedere o registrarti per scrivere nel forum
3 risposte