尝试打印字符串,但用“@@”代替数据
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++)
我正在尝试从用户那里获取一个字符串,然后删除字符串中除字母以外的所有字符。 字符串 包含空格的字符串。 我输入了一个字符串,但输出只是“@@”。
我不知道发生了什么。
//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++)