Тим Čas один лайнер поражает строки, полученные вызовом fgets, потому что вы знаете, что они содержат одну новую строку в конце.
Если вы находитесь в другом контексте и хотите обрабатывать строки, которые могут содержать более одной новой строки, вы можете искать strrspn. Это не POSIX, то есть вы не найдете его во всех Unices. Я написал один для своих собственных нужд.
/* Returns the length of the segment leading to the last
characters of s in accept. */
size_t strrspn (const char *s, const char *accept)
{
const char *ch;
size_t len = strlen(s);
more:
if (len > 0) {
for (ch = accept ; *ch != 0 ; ch++) {
if (s[len - 1] == *ch) {
len--;
goto more;
}
}
}
return len;
}
Для тех, кто ищет эквивалент Perl chomp в C, я думаю, что это он (chomp только удаляет конечную новую строку).
line[strrspn(string, "\r\n")] = 0;
Функция strrcspn:
/* Returns the length of the segment leading to the last
character of reject in s. */
size_t strrcspn (const char *s, const char *reject)
{
const char *ch;
size_t len = strlen(s);
size_t origlen = len;
while (len > 0) {
for (ch = reject ; *ch != 0 ; ch++) {
if (s[len - 1] == *ch) {
return len;
}
}
len--;
}
return origlen;
}
S3 является безопасным по умолчанию, и так было всегда - пользователю всегда нужно было делать преднамеренные, целенаправленные шаги для того, чтобы «случайно» обнародовать содержимое своего сегмента ... хотя пользователи все равно время от времени допускают ошибки конфигурации и выставляют их ведра.
AWS реализовал два уровня защиты от стеганого оружия, предназначенных для того, чтобы сделать эти ошибки более сложными - существуют настройки уровня корзины и уровня счета, чтобы предотвратить публичный доступ к корзинам, и ] из которых нужно «разрешить» вам это сделать. Если какая-либо из политик не позволяет вам публиковать корзину, вы получите Access Denied
при попытке создать или изменить политику корзины, если система классифицирует вашу новую политику как даже слегка «общедоступную».
Прежде чем продолжить и отключить безопасность, обратите внимание, что система пытается защитить вас от себя. По сути, никогда нет веской причины, чтобы *
писать или удалять из вашего списка. "Principal": "*"
означает любого пользователя, включая неаутентифицированных / анонимных пользователей.
Найдите «Настройки общего доступа для этой учетной записи» на левой панели навигации консоли S3 для глобальных настроек.
Похоже, что учетная запись пользователя, которую вы пытаетесь сделать, не имеет разрешения на изменение этого конкретного сегмента. Проверьте разрешение своей учетной записи в IAM или на панели учетной записи.