Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Μια άλλη εκδοχή του κώδικα της Ε.12 μπορεί να' ναι και κάπως έτσι:

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

int main()
{
	char str[] = "Text", *ptr;		/* Μεταβλητές για αποθήκευση της λέξης και του δείκτη που πιο μετά θα αντιγραφτεί η λέξη*/
	int i, ptr_c_len;			/* Μεταβλητές για την αποθήκευση των αριθμών μέτρησης επαναλήψεων και μέτρησης πλήθους των χαρακτήρων */ 

	ptr = str;				/* Εκχωρεί στο ptr τα δεδομένα του str */
	ptr_c_len = strlen(ptr);		/* Στην ptr_c_len σημειώνεται ο αριθμός με το πλήθος των χαρακτήρων που είναι αποθηκευμένα και στην ptr  */

	for(i = 0;  i < ptr_c_len;  i++) {	/* Επαναλαμβάνει την εμφάνιση του κάθε χαρακτήρα όσες και οι χαρακτήρες που αποτελούν το περιεχόμενο της ptr  */
		printf("%c", *ptr++);		/* Εμφανίζει κάθε ένα χαρακτήρα με τη σειρά και τελικά όλη την λέξη*/
	}	
	printf("\n");

	return 0;
}
  • Like 1
Δημοσ. (επεξεργασμένο)

Έχει ένα λάθος στα remarks ο cvb~, αν κάνω λάθος διορθώστε με. Ο πίνακας str[] είναι read only, δεν είναι μεταβλητός δηλαδή!

δεν έχει!

Επεξ/σία από M2000
Δημοσ.

Ο πίνακας ο ίδιος και η μεταβλητή που δείχνει σ' αυτόν δεν είναι το ίδιο πράγμα.

 

Technically και τα δύο είναι μεταβλητά -- char[] και char*, κανένα δεν είναι const. Αλλά είναι UB να πειράξεις τα περιεχόμενα του πίνακα.

  • Moderators
Δημοσ.

Αλλά είναι UB να πειράξεις τα περιεχόμενα του πίνακα.

 

wat

Γιατί; Πού έχει UB ο κώδικας του cvb~;

Δημοσ.

wat

Γιατί; Πού έχει UB ο κώδικας του cvb~;

 

Πουθενά, δεν είπα ότι τα πειράζει ούτε ότι συμφωνώ με την άποψη του m2000 ότι υπάρχει λάθος στα remarks.

Δημοσ.

Δεν έχει, αλλά δεν είναι μεταβλητός ο πίνακας. Αν κάποιος διαβάσει τις σημειώσεις λέει Μεταβλητές για αποθήκευση της λέξης, το οποίο όμως δεν είναι μεταβλητή, αφού απλά παίρνει μια αρχική τιμή και τίποτα άλλο! Αν δηλαδή κάποιος σκεφτεί να αλλάξει ένα γράμμα δεν θα μπορεί να το κάνει!

 

διόρθωσα!

Δημοσ.

ok,νόμιζα ότι το str[] είναι ισοδύναμο με αυτό: *str αλλά δεν είναι!

αν είχε δηλώσει char *str= "Text"

θα έτρεχε το πρόγραμμα αλλά το str δείχνει σε μνήμη που διαβάζεται μόνο.

Το char str[]= "Text" όμως το τσέκαρα, δίνεται σε μνήμη που αλλάζει!

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...