c - 如何在C中修剪字符串中的空格?
问题描述
我正在尝试编写一个 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]);
}
}
输入:你好你好
预期输出:HelloHello。
当前输出:Hello◄Hello
解决方案
s
您应该从to复制a
,而不是a
to 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;
}
推荐阅读
- sql - 在某些字符后加逗号
- java - Gradle transitive dependency resolution issue when multiple Maven repos are defined
- sql - set value with cfif cfelse Coldfusion
- javascript - How to filter out the repeat element from JS Array?
- python - TypeError at /accounts/register/ __init__() got an unexpected keyword argument 'instance'
- java - Is it possible to change text colour of a string in Java?
- facebook - Facebook 评论 - 审核不起作用
- bash - 按名称排序和移动文件 (ksh)
- elasticsearch - Packetbeat 抛出 Bulk item insert failed 错误
- c# - 为什么 IIS Express 向我的一个 .Web 项目的请求发送 426 Upgrade Required 错误?