Γεια σας θα ηθελα να γνωριζω με ποιον τροπο μπορω να ελεγχνω αν αυτο που βαζει ο χρηστης απο το πληκτρολογιο του ειναι ιδιο με μια τιμη που εχω σε ενα 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 )
'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 περιβάλλον.
Μάλλον αυτό είναι το πρόβλημα, δοκίμασε δίχως τη λέξη 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 συνήθως αυτή χρησιμοποιείται (από τα διάφορα εκπαιδευτικά ιδρύματα) για να διαχειριστούμε πιο "πρωτόγονες" καταστάσεις. Ακόμα και την strcmp την φτιάχνουμε συνήθως παρά την χρησιμοποιούμε έτοιμη. Και αυτή η άσκηση θεωρώ ότι βασίζεται στην φιλοσοφία της strcmp !!
Προσπάθησε να διαβάζεις ένα-ένα χαρακτήρα τόσο από την κονσόλα όσο και από το αρχείο. Τα συγκρίνεις επαναληπτικά και βγάζεις το αποτέλεσμα.
Παράθεση από: Νικολας Πεγιος στις 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;
}