Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c] Błąd konwersji przy zapisywaniu iteracji do pliku

Ostatnio zmodyfikowano 2013-10-21 15:28
Autor Wiadomość
maciek112
Temat założony przez niniejszego użytkownika
[c] Błąd konwersji przy zapisywaniu iteracji do pliku
» 2013-10-19 11:26:56
Witajcie.

Co jest nie tak z tym kodem, że nie mogę do treści pliku zapisać numeru iteracji pętli ?

C/C++
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>

int main( int argc, char const * argv[] ) {
   
    int n, i;
    char buffer[ 100 ];
   
    scanf( "%d", & n );
   
   
    for( i = 0; i < n; i++ ) {
       
       
        snprintf( buffer, 100, "file_%d.txt", i );
        int fd = open( buffer, O_RDWR | O_CREAT, 0600 );
       
       
        write( fd, i, sizeof( n ) );
        close( fd );
    }
   
    return 0;
}
P-93999
Monika90
» 2013-10-19 18:54:14
Drugim argumentem dla write ma być wskaźnik, a nie int.
P-94056
maciek112
Temat założony przez niniejszego użytkownika
» 2013-10-20 11:48:17
Jak daję tak:

C/C++
int * wx;
wx = & i;

write( fd, * wx, sizeof( n ) );

to też nie działa :(
P-94101
pekfos
» 2013-10-20 12:58:14
Masz podać wskaźnik, a nie int.
P-94105
maciek112
Temat założony przez niniejszego użytkownika
» 2013-10-21 13:05:35
Zrobiłem teraz tak:

C/C++
int main( int argc, char * argv[] ) {
   
    int n, i;
    char buffer[ 100 ], * x;
   
   
    scanf( "%d", & n );
   
   
    if( argc != 2 ) {
       
        perror( "Blad - zla liczba parametrow" );
        return 0;
    }
   
    for( i = 0; i < n; i++ ) {
       
        snprintf( buffer, 100, "file_%d.txt", i );
        int fd = open( buffer, O_RDWR | O_CREAT, 0600 );
       
        x = itoa( i, buffer, 10 );
       
        write( fd, x, sizeof( i ) );
        close( fd );
    }
   
    return 0;
}

I tworzy ten plik, ale jest inny problem: do pliku oprócz tego mojego numeru doklejają się też jakieś krzaczki. Czemu ?

A druga sprawa to czemu nie działa mi sprawdzanie czy są 2 argumenty ?
P-94182
Monika90
» 2013-10-21 13:20:04
Zapisujesz zawsze sizeof(int) znaków, a nie tyle ile itoa zapisało do bufora.

A druga sprawa to czemu nie działa mi sprawdzanie czy są 2 argumenty ?
Bo jak są 2 argumenty, to argc jest równe 3.
P-94184
maciek112
Temat założony przez niniejszego użytkownika
» 2013-10-21 13:28:42
To co tam umieścić w 3-cim argumencie we write ?
P-94185
Monika90
» 2013-10-21 13:33:32
To co tam umieścić w 3-cim argumencie we write ?
Ilość znaków które chcesz zapisać.
P-94186
« 1 » 2
  Strona 1 z 2 Następna strona