【发布时间】:2018-07-30 18:40:56
【问题描述】:
有人可以帮我看看我的代码有什么问题吗?我使用 switch case 制作了解决方案,并将标点符号替换为空字符串。
#include<stdio.h>
#include<string.h>
int main()
{
char st[50];
int i;
printf("ENter the string:\n");
gets(st);
for(i=0;i<strlen(st);i++)
{
switch(st[i])
{
case '!':
case '"':
case '#':
case '$':
case '%':
case '&':strcpy(st[i]," ");
break;
}
printf("String is:\n");
puts(st);
}
return 0;
}
【问题讨论】:
-
为什么要对单个字符使用
strcpy? -
case else 和 switch 的结束呢?为什么不使用 OR 逻辑,这很短可能是一个 If 语句。我的 C++ 生锈了,一直在研究 C# 及其不同之处。
-
strcpy会将空白和 NULL 终止符复制到 src 指定的位置,在您的情况下,这甚至不是一个好的地址。你应该改变:strcpy(st[i]," ");=>st[i] = ' ';.. 你的开关应该有一个默认情况,它只是中断。此外,编译时打开警告,因为它们会通知您您的错误。 -
函数:
gets()已经贬值多年,并在 C 标准 C11 中完全从 C 语言中删除
标签: c arrays string loops switch-statement