gpt4 book ai didi

c - 复制和打印文本位的程序中持续出现小错误(Kochans C 书,exercsie 9.4)

转载 作者:行者123 更新时间:2023-11-30 20:38:29 25 4
gpt4 key购买 nike

我正在开发一个程序,该程序接受文本字符串并从中提取子字符串(Kochan 的 C 语言编程练习 9.4)。目标是创建一个名为 substring 的函数,该函数将字符串、从哪里开始提取、要提取多少个字母以及返回的结果作为参数

子字符串(字符串、数字、数字、字符串)。

我的问题是,虽然我可以输入短语并声明从哪里开始提取,但提取的位数始终不正确。我怀疑我的算法有某种缺陷。我的函数的代码如下。

char substring (char source[], int start, int count,char result[])
{
int x = 0;

for (x = 0; result[x] != '\0' || x <= count; ++x){
result[x] = source[x+start];
}
return result;
}

另一个线索是,我收到一条警告:“return gets integer from a pointer without a Cast”

当然,警告不好,但是当我从函数内打印时,我得到了同样的错误。

整个程序的代码如下,

#include <stdio.h>

int main (void)
{

char source[81];
char result[81];
int start, count;
void readLine(char buffer[]);
char substring(char source[], int start, int count,char result[]);

printf ("Please enter line\n");
readLine(source);
printf ("Please enter where to start extraction (positive integers only please)\n");
scanf ("%i", &start);
printf ("And how many characters should the string be?\n");
scanf ("%i", &count);

substring (source, start, count, result);

printf ("%s", result);

return 0;
}


void readLine (char buffer[])
{
int i = 0;
char character;
i = 0;

do
{
character = getchar();
buffer[i] = character;
++i;
}
while (character != '\n');

buffer[i-1] = '\0';

}

char substring (char source[], int start, int count,char result[])
{
int x = 0;

for (x = 0; result[x] != '\0' || x <= count; ++x){
result[x] = source[x+start];

}
return result;
}

任何见解将不胜感激。

最佳答案

函数中的五个问题:其返回类型,使用 ||在循环条件下,测试 x<=count ,测试错误字符串中的终止符,并且不终止目标字符串。

char *substring (char *source, int start, int count, char *result)
{
int x;
for (x=0; source[x+start], x<count; x++)
result[x] = source[x+start];
result [x] = '\0';
return result;
}

关于c - 复制和打印文本位的程序中持续出现小错误(Kochans C 书,exercsie 9.4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28879824/

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