Warning: assignment makes integer from pointer ohne cast
Lerne ich C fast ein Jahr und es ist mein erstes mal, dass ich die Warnungen.
Das ist mein code:
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <windows.h>
#include <string.h>
int socket_creation(FILE* fp){
int s;
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s == INVALID_SOCKET){
printf("Error occurred while creating socket: %d\n", WSAGetLastError());
fprintf(fp, "Error occurred while creating socket: %d\n", WSAGetLastError());
}
else{
printf("Socket creation was successful.\n");
fprintf(fp, "Socket creation was successful.\n");
}
return s;
}
void connect_to_server(int s, struct sockaddr_in ClientService, FILE* fp){
int cResult;
cResult = connect(s, (struct sockaddr*) &ClientService, sizeof(ClientService));
if (cResult == SOCKET_ERROR){
printf("connection to the server has been failed: %d\n", WSAGetLastError());
fprintf(fp, "connection to the server has been failed: %d\n", WSAGetLastError());
cResult = closesocket(s);
if (cResult == SOCKET_ERROR){
printf("error occurred while trying to close socket. \n");
fprintf(fp, "error occurred while trying to close socket. \n");
}
WSACleanup();
}
else{
printf("Connection to serevr has been made successfully. \n");
fprintf(fp, "Connection to serevr has been made successfully. \n");
}
}
int send_to_serv(char buffer[], int s){
int sendto;
sendto = send(s, buffer, 1024, 0);
if (sendto == -1)
printf("\nError: couldn't send the Code.\n", buffer);
else printf("\nCode: <%s> SENT.\n", buffer);
return sendto;
}
int recv_from_serv(int s, int* numberLines, FILE *fp){
int recvfrom;
char buffer[1024] = "";
recvfrom = recv(s, buffer, 1024, 0);
if (recvfrom == -1)
printf("\nError: couldn't receive Code. !\n");
else printf("\nRespond: <%s>, RECEIVED. \n", buffer);
fprintf(fp, "\n");
fprintf(fp, buffer);
*numberLines = atoi(buffer + 3);
return recvfrom;
}
int main() {
WSADATA info;
int error, s;
int sResults, sendError, recvError,convert2;
char buffer[1024] = "";
char recvbuf[1024] = "";
int numberLines, i, temp, convert;
char converted_num[1024] = "";
struct sockaddr_in ClientService;
FILE *fp = fopen("stored_data.txt", "w");
char* lines_array;
error = WSAStartup(MAKEWORD(2, 0), &info);
if (error != 0){
printf("WSAstartup failed with error: %d\n", error);
exit(1);
}
for (i=0; i <=numberLines; i++) {
lines_array[i]=NULL;
}
s = socket_creation(fp);
ClientService.sin_family = AF_INET;
ClientService.sin_addr.s_addr = inet_addr("54.209.143.42");
ClientService.sin_port = htons(6714);
connect_to_server(s, ClientService, fp);
strcpy(buffer, "100");
sendError = send_to_serv(buffer, s);
recvError = recv_from_serv(s, &numberLines, fp);
strcpy(buffer, "400");
sendError = send_to_serv(buffer, s);
recvError = recv_from_serv(s, &numberLines, fp);
printf("\nNumber of Lines are: %d\n", numberLines);
lines_array = malloc(sizeof(char*)*numberLines);
temp = numberLines;
for (i = 0; i < temp; i++){
convert = 5000001 + i;
_itoa(convert, converted_num, 10);
sendError = send_to_serv(converted_num, s);
convert2=atoi(convert);
convert=convert%10000;
if(convert2==0) {
for(i=0; i<=1024; i++) {
buffer[i]=0;
}
lines_array= (convert);
recv_from_serv(s, &numberLines, fp);
}
else{
for(i=0; i<=1024; i++) {
buffer[i]=0;
}
}
}
close(fp);
//system("PkAUSE>nul");
system("PAUSE");
return 0;
}
Dies ist die Ausgabe, dass mein compiler (MinGW) in der Angabe zu mir:
finalproject1.c: In Funktion
main': finalproject1.c:87: warning:
atoi' makes pointer
assignment makes integer from pointer without a cast
finalproject1.c:113: warning: passing arg 1 of
von Ganzzahl ohne cast finalproject1.c:119: Warnung: Zuweisung
lässt Zeiger von Ganzzahl ohne cast finalproject1.c:133:3:
Warnung: kein newline am Ende der Datei
Bitte helfen Sie mir, ich weiß nicht, was zu tun ist und meine guid sagte mir, "Google es", als ich ihn bat, mir zu helfen.
InformationsquelleAutor user2944248 | 2014-07-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Linie, die Auslöser der Warnung:
und diese variable deklariert ist, in etwa so:
so sind Sie pauken ein Zeiger (der
NULL
makro erweitert, um eine Zeiger-type-Wert auf Ihrem system) in einer einzigenchar
haben, die nicht fit und ist eine sehr seltsame Sache zu tun.Wahrscheinlich wollte Sie ein array von Zeichen Zeigern, d.h.
aber dann musst du natürlich zuweisen der array-sobald Sie wissen, wie viele Zeilen, die Sie gehen, um mit zu tun.
main': finalproject1.c:114: warning: passing arg 1 of
atoi' makes pointer from integer ohne cast finalproject1.c:120: Warnung: Zuweisung lässt Zeiger von Ganzzahl ohne cast finalproject1.c:134:3: Warnung: kein newline am DateiendeInformationsquelleAutor unwind
Zunächst, ich kann sehen, dass Sie mit einem integer - numberLines als Bedingung in deiner for-Schleife ohne Initialisierung es zuerst:
Einfach, wenn Sie möchten, initialisieren Sie das array auf null können Sie es initialisieren:
Versuchen Sie dies und lassen Sie mich wissen, ob die Warnhinweise noch vorhanden sind.
InformationsquelleAutor Hussein Terek