khankuliyev / dst

0 stars 0 forks source link

dst #1

Open khankuliyev opened 3 months ago

khankuliyev commented 3 months ago

include

include

include

char ExtractLetters(char const str) { if (str == NULL) { return NULL; }

int len = 0;
for (int i = 0; str[i] != '\0'; i++) {
    if ((str[i] >= 'A' && str[i] <= 'Z')  (str[i] >= 'a' && str[i] <= 'z')) {
        len++;
    }
}

char* result = (char*)malloc((len * 2) + 1 + len); // Увеличенный размер выделенной памяти
if (result == NULL) {
    return NULL;
}

int index = 0;
for (int i = 0; str[i] != '\0'; i++) {
    if ((str[i] >= 'A' && str[i] <= 'Z')  (str[i] >= 'a' && str[i] <= 'z')) {
        result[index++] = str[i];
        result[index++] = ',';
        result[index++] = ' ';
    }
}
result[index] = '\0';
return result;

}

char ReadLine(void) { char buffer = NULL; char tempBuffer[1000]; // Увеличенный размер буфера int length = 0;

do {
    if (fgets(tempBuffer, sizeof(tempBuffer), stdin) == NULL) {
        break;
    }

    int tempLength = strlen(tempBuffer);
    char* newBuffer = (char*)realloc(buffer, length + tempLength + 1);
    if (newBuffer == NULL) {
        free(buffer);
        return NULL;
    }

    buffer = newBuffer;
    strcpy(buffer + length, tempBuffer);
    length += tempLength;
} while (tempBuffer[strlen(tempBuffer) - 1] != '\n');

return buffer;

}

int main() { char input = ReadLine(); while (strlen(input) > 0) { char extractedLetters = ExtractLetters(input); if (extractedLetters != NULL) { printf("%s\n", extractedLetters); free(extractedLetters); } else { printf("Error: Failed to extract letters\n"); } free(input); input = ReadLine(); }

free(input);
return 0;

}

khankuliyev commented 3 months ago

I have a problem with buffer overflow