2012-01-25 4 views
1

Привет каждые один это расширение к моему предыдущему question.Here ссылкипередачи файлов дополнительные строки печатаются

File Transfer application

Я вставил «/ п» в конце моего имени файла и успешно получить имя файла вместе с данными в файле. но есть какая-то проблема, что после моей стороны сервера прочитать байты из гнезд до «/ п» также написать странное заявление, в начале моего файла

ORBIT_SOCKETDIR =/TMP/орбитально резюме

может любой один скажи мне, что происходит. как избежать этого в хранении в моем файле

вот мой фрагменты кода client.c

char * filename = strrchr(argv[3],'/'); // extracting file name from path 
    *filename++; filename[strlen(filename)] = '\n'; // putting /n at the end of file name n = write(sockfd, filename, strlen(filename)); 
    bzero(buffer,256); FILE *f = fopen("file.txt" ,"rb"); // opening the file 
    size_t bytes = 0; 

    // sending the actual data in the file 
    while((bytes = fread(buffer ,sizeof(char) ,sizeof(buffer) ,f))>0) 
     send(sockfd ,buffer ,bytes , 0); 

server.c

while(ch[0] != '\n') // here reading the filename 
{ 
    n = read(newsockfd,ch,1); 
    filename[i] = ch[0]; 
    printf("ch %c " , ch[0]); 
    i++; 
} 


FILE *f = fopen(filename ,"wb"); 

// reading the actual data and writing it in the file 
while((bytes = recv(newsockfd ,buffer , sizeof(buffer) ,0))>0) 
    fwrite(buffer,sizeof(char) ,bytes , f); 

ответ

2

Вы пытаетесь добавить символ в argv[3] в -место. Тем не менее, есть no guarantee, что для размещения дополнительного символа выделено достаточно памяти.

Кроме того, как только вы заменили терминатор NUL на \n, вы забыли добавить новый терминатор NUL.

В итоге: выделить достаточно памяти для argv[3] плюс \n плюс NUL, скопировать строку в него, и, наконец, добавить \n и NUL.

+0

, но сэр, что означает эта строка, означает «ORBIT_SOCKETDIR =/tmp/orbit-cv» это из-за null ?? – mainajaved

+0

@mainajaved: Почти наверняка из-за отсутствия 'NUL' ... ваша строка теперь распространяется в память, где ее не должно быть. – NPE

+0

благодарит alot sir – mainajaved

Смежные вопросы