【发布时间】:2016-02-10 21:36:38
【问题描述】:
我的作业要求显示我的名字,使其看起来像这样:'姓氏,名字'。姓氏,然后 [逗号空格] 名字。虽然没有移过该名称之后的其余文本。这是我的代码:
char str1[11];
char str2[3];
char str3[16];
strcpy (str1,fn);
strcpy (str2,", ");
strcpy (str3,ln);
strncat (str1, str2, 14);
strncat (str1, str3, 31);
我的老师说我做了他想做的事,但他不喜欢我使用了多少行代码,并说我做的工作超出了我的需要。
变量:ln = last name, fn = first name 我为 ', ' 逗号空间创建了 str2。
他要我做什么?
【问题讨论】:
-
ln和fn有哪些类型?为什么不能直接使用它们?
-
你必须使用
strcpy和strncat吗?如果没有,请查看sprintf! -
它们是 char[size]。
-
您不需要为最终字符串分配 3 个单独的缓冲区。您可以只分配一个缓冲区,然后将 strcat 字符串分配给它。例如
strcat(str1, ", ");。或者,您可以使用 sprintf。 -
另外,您应该确保 str1 的大小正确。 str1 是 11 个字节,但您调用 strncat 时将 31 个字节作为最大长度参数。来自 Linux 手册页:“dest 的大小必须至少为 strlen(dest)+n+1”