Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Αλγοριθμική και Προγραμματισμός => Μήνυμα ξεκίνησε από: Νικολας Πεγιος στις 08 Μαρ 2022, 08:06:56 ΜΜ

Τίτλος: βοηθεια στην C!!
Αποστολή από: Νικολας Πεγιος στις 08 Μαρ 2022, 08:06:56 ΜΜ
Γεια σας θα ηθελα  να γνωριζω με ποιον τροπο μπορω να ελεγχνω αν αυτο που βαζει ο χρηστης απο το πληκτρολογιο του ειναι ιδιο με μια τιμη που εχω σε ενα txt αρχειο (εγω εκανα):

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

int main() {

system("copy con ask1.txt");
 //γραφω γεια σου κοσμε ,παταω enter kai μετα ctrl+Z.

  char string1[] = {"γεια σου κοσμε"};
 
  
  if (strcmp(string1, system("text ask1.txt")) == 0)
      printf("Yes 2 strings are same\n");
  else
      printf("No, 2 strings are not same\n" );
      return 0;
 
}


αλλα μου βγαζει 'text' is not recognized as an internal or external command,
operable program or batch file.(ευχαριστω οποιον/α βοηθησει ;D )
Τίτλος: Απ: βοηθεια στην C!!
Αποστολή από: George Eco στις 09 Μαρ 2022, 01:20:25 ΠΜ
'text' is not recognized as an internal or external command

Μάλλον βαράει αυτό:

  if (strcmp(string1, system("text ask1.txt")) == 0)

text ask1.txt
Αυτό που γράφεις, είναι: εκτέλεσε την εντολή text με παράμετρο ask1.txt
Επιστρέφει σφάλμα φυσικά  σε  cmd περιβάλλον.

Τίτλος: Απ: βοηθεια στην C!!
Αποστολή από: George Eco στις 09 Μαρ 2022, 01:27:29 ΠΜ
Μάλλον αυτό είναι το πρόβλημα, δοκίμασε δίχως τη λέξη text.
Δε ξέρω καν, αν με system("ask1.txt") περνά ως παράμετρο το περιεχόμενο του κειμένου με σωστό τρόπο.
Δοκίμασε πάντως.

Για τσέκαρε εδώ:

https://stackoverflow.com/questions/174531/how-to-read-the-content-of-a-file-to-a-string-in-c

https://www.tutorialspoint.com/cprogramming/c_file_io.htm

Τίτλος: Απ: βοηθεια στην C!!
Αποστολή από: ssimaiof στις 09 Μαρ 2022, 09:53:08 ΠΜ
Δεν γνωρίζω το πνεύμα της άσκησης αλλά νομίζω ότι μάλλον δεν εξαντλείται στην κλήση εντολών συστήματος !
Και επειδή μιλάμε για κλασική C συνήθως αυτή χρησιμοποιείται (από τα διάφορα εκπαιδευτικά ιδρύματα) για να διαχειριστούμε πιο "πρωτόγονες" καταστάσεις. Ακόμα και την strcmp την φτιάχνουμε συνήθως παρά την χρησιμοποιούμε έτοιμη. Και αυτή η άσκηση θεωρώ ότι βασίζεται στην φιλοσοφία της strcmp !!
Προσπάθησε να διαβάζεις ένα-ένα χαρακτήρα τόσο από την κονσόλα όσο και από το αρχείο. Τα συγκρίνεις επαναληπτικά και βγάζεις το αποτέλεσμα.
Τίτλος: Απ: βοηθεια στην C!!
Αποστολή από: tdrivas στις 16 Μαρ 2022, 09:24:28 ΠΜ
Παράθεση από: Νικολας Πεγιος στις 08 Μαρ 2022, 08:06:56 ΜΜΓεια σας θα ηθελα  να γνωριζω με ποιον τροπο μπορω να ελεγχνω αν αυτο που βαζει ο χρηστης απο το πληκτρολογιο του ειναι ιδιο με μια τιμη που εχω σε ενα txt αρχειο (εγω εκανα):

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

int main() {

system("copy con ask1.txt");
 //γραφω γεια σου κοσμε ,παταω enter kai μετα ctrl+Z.

  char string1[] = {"γεια σου κοσμε"};
 
 
  if (strcmp(string1, system("text ask1.txt")) == 0)
      printf("Yes 2 strings are same\n");
  else
      printf("No, 2 strings are not same\n" );
      return 0;
 
}


αλλα μου βγαζει 'text' is not recognized as an internal or external command,
operable program or batch file.(ευχαριστω οποιον/α βοηθησει ;D )

Δοκίμασε αυτό:


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


#define BUFFER_SIZE 1000


int computeIndex(FILE *fp, const char *word, int *line, int *col);


int main()
{
    FILE *fp;
    char path[100];
    char word[50];
    int line, col;

    printf("File full path: ");
    scanf("%s", path);
    printf("Enter word to search in file: ");
    scanf("%s", word);

    fp = fopen(path, "r");

    if (fp == NULL)
    {
        printf("Unable to open file.\n");
        exit(EXIT_FAILURE);
    }


    computeIndex(fp, word, &line, &col);

    if (line != -1)
        printf("'%s' found at line: %d, col: %d\n", word, line + 1, col + 1);
    else
        printf("'%s' does not exists.", word);
   
    fclose(fp);

    return 0;
}


int computeIndex(FILE *fp, const char *word, int *line, int *col)
{
    char str[BUFFER_SIZE];
    char *pos;

    *line = -1;
    *col  = -999;

    while ((fgets(str, BUFFER_SIZE, fp)) != NULL)
    {
        *line += 1;

        pos = strstr(str, word);

        if (pos != NULL)
        {
            *col = (pos - str);
            break;
        }
    }
    if (*col == -999)
        *line = -1;

    return *col;
}