为什么我的代码出现Segmentation错误(核心转储(,我检查了所有可能的测试用例。
Input: aaabbcc
Output:abc
Input: abbcccccc
Output:abc
它将只打印未重复的字符。
#include <stdio.h>
void main()
{
char a[100],c=0;
int i;
scanf("%s",a);
for(i=0;a[i]!=" ";i++)
{
if(a[i]!=a[i+1])
printf("%c",a[i]);
}
}
您的for循环条件是错误的a[i]!=" "
应该是a[i]!=' '
,您需要查找' '
终止,并且" "
是字符串(char *
(。理想情况下,如果有适当的警告,您应该得到编译警告。
for(i=0;a[i] != ' ';i++)
{
if(a[i]!=a[i+1])
printf("%c",a[i]);
}
事实上,一个更好的for循环是防止数组大小越界,例如,考虑一个输入长度超过100
个字符的的情况
for(i=0; (a[i] != ' ' ) && ( i < (sizeof a) );i++)
{
if(a[i]!=a[i+1])
printf("%c",a[i]);
}