我想创建一个程序来删除字符串中字符之间的空格。
这是我的代码:
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
int main(){
char str[10]="I love you",temp[20];
int i,j;
for(i=0;str[i];i++){
if(str[i] ==" "){
}
else{
temp[j]=str[i];
j++;
}
}
temp[j]='\0';
strcpy(str,temp);
printf("%s",str);
}
最佳答案
您的程序存在几个问题。
虽然字符数组的初始化在 C 中是有效的
char str[10]="I love you",temp[20];
^^^^
尽管如此,数组 str
不会包含字符串文字 "I love you"
的终止零,因为字符串文字包含 11 个字符(包括终止零)。这给数组的处理带来了一些困难。
最好像这样声明数组
char str[11]="I love you",temp[20];
^^^^
或者类似
char str[]="I love you",temp[20];
^^^^
在这种情况下,数组将包含终止零。
在此声明中
if(str[i] ==" ") {
^^^^
将字符与指针进行比较,因为字符串文字 ""
被隐式转换为指向其第一个字符的指针。
我认为你的意思是字符常量而不是字符串文字
if(str[i] == ' ') {
^^^^
考虑到变量j
未初始化。所以程序有未定义的行为。至少你应该写
int i,j = 0;
^^^^^
并且可以在不使用辅助数组的情况下编写程序。
它可能看起来像以下方式
#include <stdio.h>
int main( void )
{
char str[] = "I love you";
size_t i = 0;
while ( str[i] && str[i] != ' ' ) i++;
size_t j = i;
while ( str[i] )
{
if ( str[++i] != ' ' ) str[j++] = str[i];
}
puts( str );
}
它的输出是
Iloveyou
关于c - 编写 C 程序删除字符串之间的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33790401/