我制作了一个程序,可以将全名缩写为缩写,并删除输入的内容之间的所有空格。它以前曾经工作过,但现在可以打印首字母以及随机符号吗?我真的不知道为什么要这么做。我也是编程的新手。
这是我的代码:
// This code removes the spaces from the inputted name
char *removeSpaces(char *str)
{
int i = 0, j = 0;
while (str[i])
{
if (str[i] != ' ')
str[j++] = str[i];
i++;
}
str[j] = '\0';
return str;
}
// This code takes the users name, and shortens (sh) it
int main(void) {
char str[100],sh[20];
int j=0;
cout<<"Enter Full Name :";
cin.getline(str,30);
for(int i=0;i<strlen(str);i++)
{
if(i==0){
sh[j]=str[i];
sh[++j]=' ';
}
else if(str[i]==' '){
sh[++j]=str[i+1];
sh[++j]=' ';
}
}
// This then takes the remove spaces code, and prints the initials with a new line
cout << removeSpaces(sh) <<endl;
cout << "\n" <<endl;
return 0;
}
答案 0 :(得分:1)
您缺少在字符串sh中添加字符串终止符('\ 0')。下面是程序。
#include <stdio.h>
char *removeSpaces(char *str)
{
int i = 0, j = 0;
while (str[i])
{
if (str[i] != ' ')
str[j++] = str[i];
i++;
}
str[j] = '\0';
return str;
}
// This code takes the users name, and shortens (sh) it
int main(void) {
char str[100],sh[100];
int j=0;
cout<<"Enter Full Name :";
cin.getline(str,30);
for(int i=0;i<strlen(str);i++)
{
if(i==0){
sh[j]=str[i];
sh[++j]=' ';
}
else if(str[i]==' '){
sh[++j]=str[i+1];
sh[++j]=' ';
}
}
sh[j+1] = '\0';
// This then takes the remove spaces code, and prints the initials with a new line
cout << removeSpaces(sh) <<endl;
cout << "\n" <<endl;
return 0;
}
输入全名:ra me ge
答案 1 :(得分:1)
在for
函数的main
循环之后,您错过了一行(我想),这意味着您的字符串可能不是以空字符结尾的。
使用与removeSpaces
函数相同的逻辑,只需在for
中的main
循环之后紧随其后添加此行:>
sh[++j] = '\0';
答案 2 :(得分:0)
完成后,您不会用sh
终止\0
,但是removeSpaces()
期望在字符串末尾有一个空字符。因此,removeSpaces()
可能会超出您的预期边界。
只需在for
中的main()
之后添加以下行:
sh[++j] = '\0\;
警告语::设置前,请始终确保j
小于20(sh
的大小)。否则,您可能会越过sh
的边界。这也可能成为问题的根源。