gpt4 book ai didi

c - 为什么我的函数在 C 中不能正常工作?

转载 作者:行者123 更新时间:2023-11-30 19:46:48 24 4
gpt4 key购买 nike

这是我的代码

#include <stdio.h>
#include <string.h>

int proba(char a[][3], int y1, int x1){
char s[1000];
int br,broj;
br=0;
s[0]='\0';
printf("%d\n", x1);
while((y1!=3) && (x1!=3)){
s[br]=a[y1][x1];
printf("s= %s\n", s);
y1=y1+1;
x1=x1+1;
br++;
}
printf("%s\n", s);
s[0]='\0';
return broj;
}


int main(void) {
const char *needle;
int konacno,n,i;
konacno=0;
n=3;
char stack[3][3]={{'a','a','a'},{'b','b','b'},{'c','c','c'}};
konacno=konacno+proba(stack, 0,0);
konacno=konacno+proba(stack, 0,1);
printf("%d", konacno);
return 0;
}

在这段代码中,我有一个二维字符数组

aaa
bbb
ccc

我的程序应该从中创建每个可能的字符串(水平、垂直、对角线...),我已经为此编写了一个函数,但它不起作用,所以我将其简化为这里的代码,并且它仍然不起作用。问题是在输出中我得到

s= a
s= ab
s= abc
abc
s= abc
s= abc
abc

您可以看到,在该过程的第二次运行中,我的 s 字符串已经是 abc,即使我已经用 清空了该字符串两次

s[0]='\0';

我不知道我做错了什么,我已经用 pascal 编写了确切的代码,它的工作原理就像我想要的那样,但这里却没有......

最佳答案

在C编程语言中,所有字符串末尾都需要一个空终止符,指定为'\0'。所以在循环中,向字符串添加字符后,需要在打印字符串之前添加空终止符。代码应该如下所示

while((y1!=3) && (x1!=3)){
s[br]=a[y1][x1];
br++;
s[br] = '\0';
printf("s= %s\n", s);
y1=y1+1;
x1=x1+1;
}

关于c - 为什么我的函数在 C 中不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23129291/

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