【发布时间】:2015-04-21 21:08:48
【问题描述】:
这里的初学者试图在几周后参加深入的 Objective-C 课程之前先了解一些基本的 C 知识,所以如果这是行人,我深表歉意..
分配是创建一个函数,该函数接受三个参数:一个源字符串,一个从该字符串开始删除的整数,以及另一个告诉函数要删除多少个字符的整数。书中给出的示例是起始字符串“错误的儿子”,然后是 4 和 6,只留下“儿子”。
我的想法是根据第一个单词和第二个单词创建两个单独的字符串,然后将它们连接在一起。到目前为止,我只能提取“the”,而我的第二个 for 循环显然什么也没做。这是我目前所拥有的:
#include<stdio.h>
int main (void)
{
char text[]="the wrong son";
void removeString (char[], int, int);
int s, l;
printf("Enter starting point for removal: ");
scanf("%d",&s);
printf("\nEnter lenght of removal: ");
scanf("%d",&l);
removeString(text, s, l);
printf("\nString after removal = %s",text);
return 0;
}
void removeString (char s1[], int s, int l)
{
printf("s1 = %s, s=%d, l=%d\n", s1, s, l);
char s2[]="";
char s3[]="";
int i,j;
for (; i<s; ++i)
{
s2[i]=s1[i];
}
printf("\n");
for (; j>l; ++j)
{
s3[j]=s1[j];
}
printf("s2 = %s, s3 = %s", s2, s3);
}
我很困惑。任何帮助将不胜感激。
【问题讨论】:
-
你需要像
int i; for (i = ...; i < s; ++i) {...}一样初始化i和j。 -
请为变量使用描述性名称,您的代码很难理解。
-
你的
s2和s3不够大。当您不指定数组的大小并使用字符串对其进行初始化时,它会使其大到足以容纳该字符串。所以char s2[] = "";等价于char s2[1] = "";