尝试打印字符串,但用“@@”代替数据

Trying to print a sring,but getting "@@" in place of data

我正在尝试从用户那里获取一个字符串,然后删除字符串中除字母以外的所有字符。 字符串 包含空格的字符串。 我输入了一个字符串,但输出只是“@@”。

我不知道发生了什么。

//C program
//Program to remove all characters in a string, except alphabet
#include <stdio.h>
#include <string.h>
int main()
{
char str[150], copy[150];
int i = 0, j = 0;
printf("\nEnter a string : ");
fgets(str,150,stdin);
for (i = 0; i < 150; i++)
{
    if ((str[i] >= 'a' && str[i] <= 'z') || 
    (str[i] >= 'A' && str[i] <= 'Z') || (str[i] == '[=10=]') )
    {
        *(copy + j) == *(str+i);
        j++;
    }
}

printf("\nResultant String : ");
for (int i = 0; i < strlen(str); i++)
{
    printf("%c",copy[i]);
}
printf("\n");
return 0;
}

在终端上,这是正在运行的程序 运行,我输入“1 2 3 4 跳上舞池”。

Enter a string : 1 2 3 4 get on the dance floor

Resultant String : @@

主要问题是你没有在这里做作业:

*(copy + j) == *(str+i);

==用于比较。你想要 =:

*(copy + j) = *(str+i);

你的循环条件也不对:

for (i = 0; i < 150; i++)

...

for (int i = 0; i < strlen(str); i++)

对于第一个循环,您正在读取源数组中的所有字节,而不仅仅是已设置的字节,在第二个循环中,您使用源字符串的长度而不是结果字符串来打印结果。这些应该是:

for (i = 0; i < strlen(str); i++)

...

for (int i = 0; i < strlen(copy); i++)