Xuất hiện kí tự lạ cuối chuỗi

em tìm mãi mà không biết vì lí do gì lại có kí tự lạ cuối chuỗi ạ, mong mọi người giúp em

#include <iostream>
#include <cstring>
#include <cctype>
using namespace std;
void myMemmove(char s[], int vt, int k)
{
    for (int i = vt + 1; i < strlen(s); i++)
    {
        s[i - 1] = s[i];
    }
    s[strlen(s)-1] = '\0';
}
void process(const char *str, char *outstr)
{
    int j = 0;
    for (int i = 0; i < strlen(str); i++)
    {
        if (str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z' || str[i] == 32)
        {
            outstr[j] = str[i];
            j++;
        }
    }
    for (int i = 0; i < strlen(outstr); i++)
    {
        if (outstr[i] >= 'A' && outstr[i] <= 'Z')
            outstr[i] = outstr[i] + 32;
    }
    while (outstr[0] == ' ')
    {
        myMemmove(outstr, 0, 0);
    }
}
int main()
{
    char str[100];
    fgets(str, 100, stdin);
    char *outstr = new char(strlen(str) );
    process(str, outstr);
    cout << outstr;
}

sau vòng for thứ nhất outstr ko có ký tự ‘\0’ cuối cùng thì strlen(outstr) nó đếm luôn ký tự rác :V hên hên lại crash chương trình :V

2 Likes

cảm ơn bác, em sửa được rồi ạ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?