【发布时间】:2013-05-25 15:31:42
【问题描述】:
我正在尝试编写一个从字符串中提取多个字符并将其分配给另一个字符串的函数。
代码:
// Problem 10.4
// String extraction function
#include <stdio.h>
void substring (char source[], int start, int count, char result[])
{
int i;
for (i = 0; i <= count; ++i) {
result[i] = source[start];
}
result[i+1] = '\0';
}
int main (void)
{
void substring (char source[], int start, int count, char result[]);
char source[] = "character", result[80];
int start, count;
substring(source[], 4, 3, result[]);
printf("%s\n", result);
return 0;
}
Xcode 告诉我该行
substring(source[], 4, 3, result[]);
是“期待一个表达式”,它不会让我编译。
我很困惑,因为我的函数没有返回任何值(它在自身内部进行字符串赋值,因为它是一个字符串,这不意味着指针被传递给函数吗?在这种情况下不是吗?意味着字符串本身正在被修改而不是本地副本?如果正在修改原始字符串,为什么我必须返回一个值?)
我不完全确定问题出在哪里,尽管我怀疑这与我没有在语法上将指针传递给我的函数这一事实有关。
提前感谢您提供的任何见解。
【问题讨论】:
-
首先,为什么main()中有
void substring (char source[], int start, int count, char result[]);,第二次尝试substring(source, 4, 3, result);而不是substring(source[], 4, 3, result[]); -
考虑学习有关数组和指针的适当教程:pweb.netcom.com/~tjensen/ptr/pointers.htm
标签: c string function pointers