ошибка при компелиоровании
Цитата:
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
void client();
struct letter
{
int len;
char *data;
}let;
int main()
{
client();
}
void client()
{
int sockfd;
int len,len2=0;
struct sockaddr_in address;
int result;
char ch;
char lenbuf[256], *buf;
sockfd = socket (AF_INET, SOCK_STREAM, 0);
address.sin_family = AF_INET;
address.sin_addr.s_addr= inet_addr("127.0.0.1");
address.sin_port = htons(9734);
len = sizeof(address);
result = connect(sockfd, (struct sockaddr *) &address, len);
if(result==-1)
{
printf("don't connect\n");
perror("ppos: client");
exit(1);
}
buf = lenbuf;
print("enter data: \n");
while((*buf++=getchar())!= '\n')/*считываем данные в буф-массив одновременно выясняя их количество*/
{
if(len2=255)
{
printf("buff is full \n");/*проверка переполнения буфера*/
break();
}
len2++;
}
*buf='\0';
let.len=len2;/*заносим в структуру длинну сообщения в символах*/
let.data = calloc (len2, sizeof(char));/*динамически выделяем память под входящие данные*/
if(!let.data) printf("memory error data\n");/*проверили -выделилась ли память*/
strncpy(let.data, mas, len2);/*копируем из буф-массива данные в структуру*/
write(sockfd, &let.data, 1);
read(sockfd, &let.data, 1);
puts(let.data);
close(sockfd);
exit(0);
}
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
void client();
struct letter
{
int len;
char *data;
}let;
int main()
{
client();
}
void client()
{
int sockfd;
int len,len2=0;
struct sockaddr_in address;
int result;
char ch;
char lenbuf[256], *buf;
sockfd = socket (AF_INET, SOCK_STREAM, 0);
address.sin_family = AF_INET;
address.sin_addr.s_addr= inet_addr("127.0.0.1");
address.sin_port = htons(9734);
len = sizeof(address);
result = connect(sockfd, (struct sockaddr *) &address, len);
if(result==-1)
{
printf("don't connect\n");
perror("ppos: client");
exit(1);
}
buf = lenbuf;
print("enter data: \n");
while((*buf++=getchar())!= '\n')/*считываем данные в буф-массив одновременно выясняя их количество*/
{
if(len2=255)
{
printf("buff is full \n");/*проверка переполнения буфера*/
break();
}
len2++;
}
*buf='\0';
let.len=len2;/*заносим в структуру длинну сообщения в символах*/
let.data = calloc (len2, sizeof(char));/*динамически выделяем память под входящие данные*/
if(!let.data) printf("memory error data\n");/*проверили -выделилась ли память*/
strncpy(let.data, mas, len2);/*копируем из буф-массива данные в структуру*/
write(sockfd, &let.data, 1);
read(sockfd, &let.data, 1);
puts(let.data);
close(sockfd);
exit(0);
}
Язык C
Система Linux
Тексты ошибок-то приведите.
Цитата:
>>>gcc asd.c
asd.c: In function ‘client’:
asd.c:59: error: expected ‘;’ before ‘(’ token
asd.c:68: error: ‘mas’ undeclared (first use in this function)
asd.c:68: error: (Each undeclared identifier is reported only once
asd.c:68: error: for each function it appears in.)
asd.c: In function ‘client’:
asd.c:59: error: expected ‘;’ before ‘(’ token
asd.c:68: error: ‘mas’ undeclared (first use in this function)
asd.c:68: error: (Each undeclared identifier is reported only once
asd.c:68: error: for each function it appears in.)
вот...
2) strncpy(let.data, mas, len2); - что такое mas? нигде не определено.
Код:
if(len2[highlight]=[/highlight]255)
Очевидно, должно быть:
Код:
if(len2[highlight]==[/highlight]255)
Чтобы не допускать таких ошибок, лучше писать константное значение впереди, тогда компилятор не позволит присваивание:
Код:
if (255 = len2) // ошибка! компилятор не позволит такую конструкцию
if (255 == len2) // ok!
if (255 == len2) // ok!
Цитата: iCrash
вот...
Ёлки, ну а если попытаться перевести эти сообщения? Ты теперь с каждым затыком собрался форум третировать?
синтаксические ошибки учимся исправлять сами. закрыто.