Chirurgia spinală minim invazivă
Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical. Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale. www.neurohope.ro |
Citire matrice caractere in C si C++
Last Updated: Dec 06 2016 18:21, Started by
VladBtz
, Dec 05 2016 18:53
·
0
#1
Posted 05 December 2016 - 18:53
fisierul nume contine o lista de nume de genul:
abc xyz efg hlm ........ kio upz Ambele imi dau crush... #include <stdio.h> #include <stdlib.h> int main(void) { char **a[26][30]; int i=1; FILE *cheie=fopen("nume.txt","r"); while(!feof(cheie)){ fgets(*a[i],sizeof(*a[i]),cheie); i++; } } si int main(void) { char lista[27][30]; fstream f("nume.txt"); for(int i=1;f.get(lista[i][30],27,30),++i); } De asemenea, cum sta treaba cu alocarea in matrice? Eu credeam ca fiecarui caracter ii corespunde un slot din ea, lui 'b' sau zicem ii corespunde lista[1][2], dar vad ca si daca introduc nume de 20 caractere si am matrice de [5][5] imi afiseaza bine in C. Edited by VladBtz, 05 December 2016 - 19:22. |
#2
Posted 05 December 2016 - 20:16
roaga si tu un programator sa-ti scrie codul.
si in caz ca intrebi: nu, tu nu esti programator. un programator nu descrie niciodata o eroare cu "imi dau crush", ci pune un mesaj de eroare primit de la compilator sau la executie. |
#3
Posted 05 December 2016 - 20:48
Am rezolvat pentru C, acum pentru C++
fstream f("nume.txt"); for(int i=0;f.get(lista[i],30);i++) cout<<lista[i]; nu mai da crash, dar imi afiseaza doar primul nume |
#4
Posted 06 December 2016 - 16:57
char **a[26][30]; nu-i matrice de caractere, e matrice de pointeri la siruri de caractere.
In C ar arata cam asa, daca citesti rand cu rand. #include <stdio.h> #include <stdlib.h> int main(void) { char caractere[26][30]; int nrRanduri; FILE* fisier = fopen("nume.txt", "r"); for (nrRanduri = 0; (! feof(fisier)) && (nrRanduri < (sizeof(caractere) / sizeof(caractere[0]))); ++nrRanduri) { fgets(caractere[nrRanduri], sizeof(caractere[nrRanduri]), fisier); } fclose(fisier); for (int i = 0; i < nrRanduri; ++i) { printf("Randul %d: %s", i, caractere[i]); } } Quote Randul 0: abc xyz Randul 1: efg hlm Randul 2: kio upz In C++, daca vrei sa lucrezi tot cu siruri de dimensiuni hardcodate, arata exact la fel. Daca vrei insa sa stochezi oricate randuri, fara sa-ti pese cate sunt sau cat sunt de lungi, folosesti ce-ti pune C++ la dispozitie. #include <iostream> #include <fstream> #include <string> #include <vector> int main(void) { std::vector<std::string> randuri; { std::ifstream fisier("nume.txt"); std::string rand; while (std::getline(fisier, rand)) { randuri.push_back(rand); } } int nrRand = 0; for (std::string& rand : randuri) { std::cout << "Randul " << nrRand++ << ": " << rand << "\n"; } } Nu folosesti aiurea stream.get() fiindca nu-i fgets(), nu-i pasa de newline asa ca daca ii ceri 30 de caractere si are de unde, ti le da pe toate, chiar daca ajunge prin mijlocul randului X. Edited by dani.user, 06 December 2016 - 17:05. |
#5
Posted 06 December 2016 - 17:17
in C, care e rostul raportului dintre cele 2 sizeof ?
ai vreo versiune de C++ fara STL ? Edited by VladBtz, 06 December 2016 - 17:47. |
#6
Posted 06 December 2016 - 17:47
Sa extrag 26, sa nu citesc mai multe randuri decat am loc.
|
#7
Posted 06 December 2016 - 17:53
for(i=1;!feof(pointer);++i)fgets(caractere[i],30,pointer); Imi merge si cu asta ( am facut-o dimineata). E ceva gresit la ea ? |
#8
Posted 06 December 2016 - 18:21
E cam tot aia, doar ca difera multe practici subtile:
Nu degeaba multe proiecte scrise in C sufera sau au suferit in tinerete de gauri de securitate severe. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users