[C] Problemi con le stringhe

di il
6 risposte

[C] Problemi con le stringhe

Buonasera a tutti.

Sto provando a fare un semplice programmino che data una stringa mi restituisce la posizione della quinta & all'interno di tale stringa.

Il codice che ho scritto è il seguente :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//funzione
int five_pos(char s[30])
{
char str1[2];
char str2[2];
int i,cont,ret;
i=-1;
cont = 0;
strcpy(str2,"&");
while(cont<5)
{
i++;
strcpy(str1,s[i]);

ret=strcmp(str1,str2);
if(ret==0) {cont++;}
}
return i;
}
//fine funzione

int main()
{
char str1[30];

int pp;

strcpy(str1,"/i&&n&&ip&&port&&altro");

pp=five_pos("/i&&n&&ip&&port&&altro");


printf("5pos : %i",pp);

return 0;
}
il quale ahime mi restituisce i seguenti errori :

5_pos.c: In function ‘five_pos’:
5_pos.c:16:1: warning: passing argument 2 of ‘strcpy’ makes pointer from integer without a cast [enabled by default]
 strcpy(str1,s[i]);
 ^
In file included from 5_pos.c:3:0:
/usr/include/string.h:125:14: note: expected ‘const char * __restrict__’ but argument is of type ‘char’
 extern char *strcpy (char *__restrict __dest, const char *__restrict __src)

spero in un vostro aiuto.

Grazie

6 Risposte

  • Re: [C] Problemi con le stringhe

    S è un char non un vettore di char e quindi non puoi utilizzare la strcpy
  • Re: [C] Problemi con le stringhe

    Ok, ottengo errori analoghi anche mettendo s nel strcmp

    quindi come posso fare a confrontare l'elemento i-esimo della stringa conil carattere & ?
  • Re: [C] Problemi con le stringhe

    Basta che lo confronti direttamente:

    c=s ; if( c=='&') ...
  • Re: [C] Problemi con le stringhe

    Un carattere lo confronti direttamente con

    if( s == '&' )
  • Re: [C] Problemi con le stringhe

    Grazie ad entrambi.

    Ho modificato il codice della funzione cosi :
    
    int i,cont,ret;
    i=-1;
    cont = 0;
    
    while(cont<5)
    {
    i++;
    
    if(s[i]=='&') {cont++;}
    
    }
    
    e funziona


    una domanda.. quando invece devo usare strcpy e strcmp?
  • Re: [C] Problemi con le stringhe

    Utilizzi le funzioni che cominciano per str quando operi con un puntatore ad un vettore di char non ad un singolo char.
Devi accedere o registrarti per scrivere nel forum
6 risposte