【问题标题】:How can i make space after punctations in C如何在C中的标点符号后腾出空间
【发布时间】:2022-01-23 01:43:11
【问题描述】:

我的作业是 某些特定的标点符号、句号(.)、逗号(,)、冒号(:)、分号(;)、问号 (?) 和感叹号 (!) 后面应该跟一个空格。例如,以下 应更正字符串,因为上述标点符号后没有空格。 (可能还有一些其他的标点符号后面需要一个空格;但是,给定 标点符号 (.,:;?!) 就足够了) 我看到你踢足球了。你是个好球员。 我看见你踢足球了。你真是个好球员。 你好!你好吗?很好,谢谢,还有你。 你好!你好吗?好的,谢谢,还有你。

我试图在所有标点符号之后腾出空间,但我得到了错误

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char string[200];
scanf("%s", string[200]);
char string1[200] = " ";
for(int i=0;i<strlen(string);i++){
if( s[i] !='.' && ',' && ';' && ':' && '!' && '?'){

  string1 = string1 + string[i];

}



else{

  string1= string1 + string[i] + " ";

}
}
string = string1;
printf("new string : %s", string);
return 0;
}

有人可以帮助我吗,或者有人可以将我的 c++ 代码转换为 C

using namespace std;
int main()
{
string s;
cout<<"Please enter the string"<<endl;
cin>>s;

cout<<"Input string:"<<s<<endl;
string s1="";
for(int i=0;i<s.length();i++)
{
    if(s[i]!='.'&&s[i]!=','&&s[i]!=';'&&s[i]!=':'&&s[i]!='!'&&s[i]!='?')
    s1=s1+s[i];
    else
    s1=s1+s[i]+" ";
}
s=s1;
cout<<"Updated string:"<<s<<endl;
return 0;
}

我正在尝试腾出空间,但在 C 语言中不能有人想出吗?

【问题讨论】:

  • 你需要strcat 来加入c中的字符串
  • 感谢您的帮助
  • if 子句检查 C 代码中的标点字符不正确。在 C++ 中的代码是正确的。
  • 如果您使用 C 编程,为什么要使用 C++ 标签? C 和 C++ 是不同的语言。例如,C++ 有 std::string 类型,而 C 没有。请适当调整标签。

标签: c++ c


【解决方案1】:

运算符+ 不适用于char[] 类型的操作数。你应该把字符复制到string1:

for(int i = 0, i1 = 0, string_length = strlen(string); i < string_length; i++)
{
    string1[i1++] = string[i];

    if (string[i] is one of the punctuation characters)
        string1[i1++] = ' ';
}

我将strlen 调用移至for 循环的初始化部分,以便它只被调用一次,而不是多次。

但请注意这段代码的一个小问题。如果标点符号后面已经有一个空格,则生成的字符串将有两个空格。如果您对此不满意,那么您将不得不添加更多代码。

【讨论】:

  • 感谢回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多