сколько тогда нужно выделять под возможный EOF места?
getchar возвращает int
getchar
сравнивается с EOF
, его надо хранить в переменной типа int
.И получается "c" нужно инициализировать явно, то есть:
char c[32]="_\0"
, где _ —любой символ, а 32 байта нужно для предотвращения проблем с EOF
?
char c1[2] = {c, 0};
strcat(word, c1);
Сделал "c" массивом в 2 символа и теперь всё заработало:
c[1]
не инициализирован, то что там оказался 0 -- чистая случайность.getchar
возвращает int
а не char
, и значение EOF
может не помещаться в char
. char c;
…
strcat(word, &c);
} else {
char c1[2] = {c, 0};
strcat(word, c1);
}
Можно пожалуйста поподробнее про окружение?
каким образом я могу найти взаимосвязь окружения и моей текущей проблемой
самостоятельные выделения памяти, которые вынужден делать из-за отсутствия этой фичи требует самостоятельного контроля
alloca
.т.е. фича полезная и избавляет от необходимости лишний раз стрелять себе в ногу
IStream* pStream;
HRESULT hr = NOERROR;
// Open a blocking type stream to the Web site.
hr = URLOpenBlockingStream (NULL, strURL, &pStream, 0, NULL);
if (hr != S_OK) {
// error
} else {
do {
char szBuffer[256];
DWORD dwGot;
hr = pStream->Read (szBuffer, sizeof (szBuffer), &dwGot);
cache += std::string(szBuffer, dwGot);
} while (SUCCEEDED (hr) && hr != S_FALSE);
pStream->Release();
}
IStream::Stat
для получения размера данных и чтения всех данных за один вызов IStream::Read
, но мне негде это проверить. git merge --strategy=ours
отменит только те изменения, которые конфликтуют с нашими, а не все. Так что это не то.
ours
c опцией разрешения конфликтов ours
стратегии recursive
.
Какое же оно допустимое, если стандарт (C99) говорит