Ho risolto creando una funzione che formatta ogni singolo carattere della stringa, e nemmeno inserendo il carattere "" (così non funziona!). Codice:
void format(stringa str){ //formattazione stringa
for(int j=0;j<98;j++)
str[j]=char(NULL);
}
Ma mi sembra "insana" come soluzione. Posto il codice completo.
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
typedef char stringa[100];
int iniz_mat(stringa nfile,int **&m,int &nr,int *&v_colu);
int r_count(stringa nfile);
int c_count(stringa nfile,int *&v_colu);
void vet_stamp(int *v,int n);
void format(stringa str);
int main(int argc, char *argv[])
{
int **m,nr,*v_colu; //m è la matrice che conterrà i valori prelevati dal file, nr è il numero di righe, *v_colu il vettore che per ogni riga segna il numero di colonne
stringa nfile; //nome file
strcpy(nfile,"ges.txt");
iniz_mat(nfile,m,nr,v_colu);
cout << "\n";
system("PAUSE");
return EXIT_SUCCESS;
}
int iniz_mat(stringa nfile,int **&m,int &nr,int *&v_colu){
nr=r_count(nfile);
v_colu=new int[nr];
m=new int*[nr];
c_count(nfile,v_colu);
vet_stamp(v_colu,nr);
}
int r_count(stringa nfile){ //conta le righe
stringa app;
strcpy(app,"");
int i=0;
ifstream file(nfile);
while(!file.eof()){
file.read(app,1);
if(!strcmp(app,"\n"))
i++;
}
i++;
file.close();
return i;
}
int c_count(stringa nfile,int *&v_colu){ //conta le colonne
stringa app;
int i=0,k=0;
format(app);
fstream file(nfile,ios::in);
while(!file.eof()){
file.read(app,1);
cout << "app: " << app << endl;
if(!strcmp(app,"\n")||file.eof()){
v_colu[i]=k;
i++;
k=0;
}
else if(!strcmp(app," "))
k++;
format(app);
}
i++;
file.close();
}
void format(stringa str){ //formattazione stringa
for(int j=0;j<98;j++)
str[j]=char(NULL);
}
void vet_stamp(int *v,int n){
for(int i=0;i<n;i++)
cout << v[i] << " ";
cout << "\n";
}
Grazie ancora per l'aiuto![]()