βοηθεια στην 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 )

George Eco

#1
'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 περιβάλλον.


George Eco

Μάλλον αυτό είναι το πρόβλημα, δοκίμασε δίχως τη λέξη 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


ssimaiof

Δεν γνωρίζω το πνεύμα της άσκησης αλλά νομίζω ότι μάλλον δεν εξαντλείται στην κλήση εντολών συστήματος !
Και επειδή μιλάμε για κλασική C συνήθως αυτή χρησιμοποιείται (από τα διάφορα εκπαιδευτικά ιδρύματα) για να διαχειριστούμε πιο "πρωτόγονες" καταστάσεις. Ακόμα και την strcmp την φτιάχνουμε συνήθως παρά την χρησιμοποιούμε έτοιμη. Και αυτή η άσκηση θεωρώ ότι βασίζεται στην φιλοσοφία της strcmp !!
Προσπάθησε να διαβάζεις ένα-ένα χαρακτήρα τόσο από την κονσόλα όσο και από το αρχείο. Τα συγκρίνεις επαναληπτικά και βγάζεις το αποτέλεσμα.
Σταύρος Σημαιοφορίδης

tdrivas

Παράθεση από: Νικολας Πεγιος στις 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;
}
Thanassis Drivas
BSc in Computer Science
MSc in Space Science Applications and Technologies
https://github.com/tdrivas