scanf ("%c", CommandForSend); // Reading string by admin from console
result = send (SocketForConnect, CommandForSend, sizeof(CommandForSend);, 0);
и вот так их читает PHP-скрипт:
Код:
$StringCommand = socket_read ($SocketForConnect, 255, PHP_NORMAL_READ); # Reading command from server
echo "$StringCommand\n"; # Print command to console
И в итоге, я на одной машине ввоже строку hello, а на другой выползает в консоль ваще какая-то хрень с закарючками всякими, притом по длине явно не совпадающая с длинной слова hello, а больше раз в 10. МОжет подскажите в чём проблема, а то я на С только что начал пробовать писать. До этого на РНР оба скрипта работали.
scanf ("%c", CommandForSend); // Reading string by admin from console
Это не "reading string", точно вам говорю. А по поводу того, что в результате мусор, читайте внимательно еще раз, как устроены строки в C, как на самом деле определить длину строки (sizeof не возвращает длину строки) и прочее. Это написано в любой вменяемой книжке по C.
scanf ("%c", CommandForSend); // Reading string by admin from console
Это не "reading string", точно вам говорю. А по поводу того, что в результате мусор, читайте внимательно еще раз, как устроены строки в C, как на самом деле определить длину строки (sizeof не возвращает длину строки) и прочее. Это написано в любой вменяемой книжке по C.
Эм, тогда я читаю строку :
scanf ("%s", CommandForSend)
и узнаю её длину:
#include <string.h>
stringlength = strlen(CommandForSend);
В итоге, если я пишу одно слово - оно нормально передаётся. Но если же я пишу строку в 2 слова - она разделяется почему-то на две части и передаётся по-отдельности. Как тут быть?
В итоге, если я пишу одно слово - оно нормально передаётся. Но если же я пишу строку в 2 слова - она разделяется почему-то на две части и передаётся по-отдельности. Как тут быть?
Если CommandForSend - символ, то надо так: scanf ("%c", &CommandForSend);.
А если строка - то вот так: scanf ("%s", CommandForSend); (и не забыть отвести под нее память).
И во всех случаях безопаснее пользоваться fgets.