我试图编写一个C程序来修剪字符串中所有出现的空白并打印结果字符串,但是没有得到理想的结果,我得到了一些随机符号作为输出。请帮助我。
#include<stdio.h>
#include<string.h>
int main()
{
char s[100];char a[100];int i;
printf("enter the string:\n");
gets(s);
int len=strlen(s);
for(i=0;i<len;i++)
{
if(s[i]!=' ')
{
a[i]=s[i];
}
}
for(i=0;i<len;i++)
{
printf("%c",a[i]);
}
}
输入:Hello Hello
预期输出:HelloHello。
当前输出:你好◄你好
答案 0 :(得分:2)
您应该从s
复制到a
,而不是从a
复制到s
。
还使用fgets
代替gets
,并使用isspace
检查空格字符。
#include <stdio.h>
#include <ctype.h>
int main() {
char s[100];
char a[100];
fgets(s, 100, stdin);
int i = 0;
int j = 0;
for (; s[i]; ++i) {
if (!isspace(s[i])) {
a[j] = s[i];
++j;
}
}
a[j] = '\0';
printf("%s\n", a);
return 0;
}
答案 1 :(得分:1)
#include <stdio.h>
#define MAX_SIZE 100 // Maximum string size
/* Function declaration */
void trimTrailing(char * str);
int main()
{
char str[MAX_SIZE];
/* Input string from user */
printf("Enter any string: ");
gets(str);
printf("\nString before trimming trailing white space: \n'%s'", str);
trimTrailing(str);
printf("\n\nString after trimming trailing white spaces: \n'%s'", str);
return 0;
}
/**
* Remove trailing white space characters from string
*/
void trimTrailing(char * str)
{
int index, i;
/* Set default index */
index = -1;
/* Find last index of non-white space character */
i = 0;
while(str[i] != '\0')
{
if(str[i] != ' ' && str[i] != '\t' && str[i] != '\n')
{
index= i;
}
i++;
}
/* Mark next character to last non-white space character as NULL */
str[index + 1] = '\0';
}