0
votes

Je veux lire une certaine partie d'une ligne en c

Je veux lire une partie spécifique d'une ligne. Je ne veux rien ajouter après "//" comme indiqué dans l'exemple. J'ai défini un drapeau pour cela. Mais j'ai du mal à aller au fond. Comment puis-je résoudre ça ? xxx

 Entrez la description de l'image ici


3 commentaires

Ne postez pas d'images de code, de données, de messages d'erreur, etc. - copiez ou tapez le texte dans la question. Comment demander


Tu as raison. Pardon. J'étais négligent simplement parce que mon temps d'achèvement de projet a été réduit.


"J'ai du mal à faire". S'il vous plaît soyez plus précis. Quel est le résultat attendu et le résultat réel? STRCMP (ligne, "//") n'est pas ce dont vous avez besoin dans ce cas. Cela fait une correspondance exacte qui n'est pas ce que vous êtes après si je vous ai bien compris correctement.


3 Réponses :


1
votes

Votre FSCANF code> est faux. Il ne retournera pas eof code>. Vous voulez comparer contre ! = 1 code> à la place.

Mais, si vous souhaitez dépouiller le commentaire et imprimer simplement les données [précédentes], vous voulez strtstr code > au lieu de strcmp code> p>

aussi, j'utiliserais fgets code> au lieu de FSCANF code> ... p> Voici votre code refactored: P>

int
strcmp(const char *s1,const char *s2)
{
    int c1;
    int c2;
    int cmp = 0;

    while (1) {
        c1 = *s1++;
        c2 = *s2++;

        if (c1 < c2) {
            cmp = -1;
            break;
        }

        if (c1 > c2) {
            cmp = +1;
            break;
        }

        // end of string -- both strings equal
        if (c1 == 0)
            break;
    }

    return cmp;
}


4 commentaires

Oui, mon code est corrigé. Merci beaucoup. Mais je ne comprends pas ici: * c = 0


Merci je l'ai eu. Mais quand j'essaie de cette façon, pourquoi ne puis-je pas obtenir le bon résultat? Si (! STRCMP ("DATA", LIGNE)) {PrintF ("Helloo"); } Pause; Lorsque vous ajoutez cette partie à la fin du code, cela ne fonctionne pas correctement.


Je vous remercie vraiment beaucoup. Vous avez été très utile.


De rien. N'oubliez pas de uplifier de bonnes réponses et d'accepter la meilleure réponse.



0
votes

format % s lit les mots (c'est-à-dire tout jusqu'à ce que l'espace suivant, onglet, nouvelle ligne, ...) mais pas des lignes; C'est probablement pourquoi vous avez du mal.

Pour la lecture en lignes complètes (c'est-à-dire tout jusqu'à une nouvelle ligne), utilisez la fonction fgets ;

pour couper la ligne off à un "//" , utilisez strtstr comme suit: xxx


0 commentaires

0
votes

@CRAIG ESTEY

    while (1)
    {

        cp = fgets(line, sizeof(line), f);
        if (cp == NULL)
            break;
        if(!strcmp("actions", cp)) {
            break;
        }
        cp = strstr(line, "//");

        if (cp != NULL)
        {
            *cp++ = '\n';
            *cp = 0;
        }

        printf("%s", line);
    }


0 commentaires