gpt4 book ai didi

c - 元素不在C中进入数组

转载 作者:行者123 更新时间:2023-12-02 10:56:41 25 4
gpt4 key购买 nike

我的字符进入数组时遇到问题,这是下面的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "graph.h"


void getfile(char[], char[]);
void reachable(char[]);

int size;
int i;

////////////GETFILE FUNCTION/////////////

void getfile(char *graph, char *source) {
FILE *infile;
infile = fopen(graph, "r");

if (infile == NULL) {
fprintf(stderr, "Can't open input file %s!\n", graph);
exit(1);
}
while (fscanf(infile, "%s", &source[i]) != EOF) {
++i;
}
fclose(infile);

size = strlen(source);
printf("%s\n", source);


reachable(&source[0]);
}

///////////REACHABLE FUNCTION////////////
void reachable (char *source){
char odd[100];
char even[100];

//printf("%s\n", odd);
//printf("%s\n", even);

int i;


for (i = 0; i<size; i+=2){
// printf("%c", source[i]);
odd[i] = source[i];
}

for (i = 0; i<size; i++){
even[i] = source[i];
}
printf("%s\n", odd);
}

输出:
rlxrtgacufkrzyngilzxazrasjsbjqqitxmewplhtwzgxhokfmadrv
r
rlxrtgacufkrzyngilzxazrasjsbjqqitxmewplhtwzgxhokfmadrv

我的第一个for循环中“REACHABLE FUNCTION”下的注释行正确地打印了原始源数组中的所有其他变量。但是,当我添加 odd[i] = source[i]时,它会中断并且仅显示驻留在我的数组 source中的字符串的第一行。

这是我打印 odd数组时要获得的输出:
rlxrtgacufkrzyngilzxazrasjsbjqqitxmewplhtwzgxhokfmadrv
rxtaukznizarssjqtmwltzxofar

有人知道为什么会这样吗?
提前致谢!
对立错觉

最佳答案

两个问题。

  • 您以2个i+=2的步幅逐步遍历源代码,但您也不应以2的跃点的步幅逐步遍历输出odd[]。该索引应在每次迭代前增加1。
  • 终止字符串不是null。 printf将继续尝试打印字符,直到到达字符值0。因此字符串“Hello”实际上是6个字节,而不是5个字节,因为结尾处有一个不可见的0来告诉printf和kin字符串何时结束。那就是实际数字零x [end] = 0; (正确),而不是char x [end] ='0'。
  • 关于c - 元素不在C中进入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61378561/

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