gpt4 book ai didi

C - 在函数中写入字符串。错误 :expected expression

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:34 25 4
gpt4 key购买 nike

我正在尝试编写一个函数,从一个字符串中提取几个字符并将其分配给另一个字符串。

代码:

// 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[]);

是“期待一个表达式”,它不会让我编译。

我很困惑,因为我的函数没有返回任何值(它在自身内部进行字符串赋值,因为它是一个字符串,这是否意味着指针被传递给了函数?在这种情况下不是吗?意味着字符串本身正在被修改而不是本地副本?如果原始字符串正在被修改,那么为什么我必须返回一个值?)

我不完全确定问题出在哪里,尽管我怀疑这与我没有在句法上将指针传递给我的函数有关。

提前感谢您提供的任何见解。

最佳答案

这不是将数组传递给函数的方式。

您正在使用 source[],不需要此 '[]'。

数组在 C 中作为引用传递。当您传递一个数组 source[] (fun(source)) 时,它的基地址将被传递到函数中,就像指针的情况一样。

substring(source, 4, 3, result);

此外,您的代码通过调用上述调用产生“aaaa”。您需要在循环中递增 start 变量,如果您的意思是 start=4,请不要忘记索引从 0 开始,它从第 5 个字符“a”开始并导致“acte”。

代码:

    // 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;

}

一切顺利...

关于C - 在函数中写入字符串。错误 :expected expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16751082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com