Хорошо, я написал эту простую программу, которая из массива char и ключевого слова сохраняет в другом массиве ту часть строки, которая начинается с этого ключевого слова.
Это работает, если я не использую любая функция для манипулирования массивом, но я не понимаю, почему она не работает, когда она обрабатывается через функцию, в этом случае нет вывода из printf.
Код, который не работает :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void createRequest(char *buffer) {
strcat(buffer, "GET /vfolder.ghp HTTP/1.1\r\n");
strcat(buffer, "User-Agent: Mozilla/4.0\r\n");
strcat(buffer, "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n");
strcat(buffer, "Conection: Keep-Alive\r\n\r\n");
strcat(buffer, "name=2&password=3");
}
void getParameters(char *buffer, char *parameters) {
for (int i = 0; i < sizeof(buffer); i++) {
if (strncmp(buffer + i, "name=", 5) == 0) { strcpy(parameters, buffer + i); }
}
}
int main(int argc, char *argv[]) {
char buffer[250];
char parameters[250];
memset(buffer, 0x00, sizeof(buffer));
memset(parameters, 0x00, sizeof(parameters));
createRequest(buffer);
fprintf(stdout, "Your buffer is: \n%s\r\n", buffer);
getParameters(buffer, parameters);
printf("The parameters are: \n%s\r\n", parameters);
}
Код, который работает:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void createRequest(char *buffer) {
strcat(buffer, "GET /vfolder.ghp HTTP/1.1\r\n");
strcat(buffer, "User-Agent: Mozilla/4.0\r\n");
strcat(buffer, "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n");
strcat(buffer, "Conection: Keep-Alive\r\n\r\n");
strcat(buffer, "name=2&password=3");
}
int main(int argc, char *argv[]) {
char buffer[250];
char parameters[250];
memset(buffer, 0x00, sizeof(buffer));
memset(parameters, 0x00, sizeof(parameters));
createRequest(buffer);
fprintf(stdout, "Your buffer is: \n%s\r\n", buffer);
for (int i = 0; i < sizeof(buffer); i++) {
if (strncmp(buffer + i, "name=", 5) == 0) { strcpy(parameters, buffer + i); }
}
printf("The parameters are: \n%s\r\n", parameters);
}