gpt4 book ai didi

在 C 中复制字符数组?

转载 作者:行者123 更新时间:2023-11-30 17:04:53 24 4
gpt4 key购买 nike

我有一个大小为 81 的数组被传递到结果参数中,但该数组在程序结束时尚未被修改。例如,输入为 "city ",结果字符串应为 "city"。我是否在某处错误地复制了字符?

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

static int getLength(const char *str) {
int i = 0;
int count = 1;
while (str[i+1] != '\0') {
count++;
i++;
}
return count;
}

void remove_spaces(const char *source, int *status, char *result) {
int first = 0;
int last;
int i;
int length = getLength(source);
if (source[0] == '\0' || source == NULL) {
*status = FAILURE;
} else {
printf("LENGTH: %d\n", length);
*status = SUCCESS;
for (i = 0; i < length; i++) {
if (source[i] != ' ') {
first = i;
break;
}
}

last = first;
printf("FIRST: %d\n" , first);
for (i = first; i < length; i++) {
if (source[i] == ' ') {
last = i - 1;
break;
}
}
for (i = first; i <= last; i++) {
result[i] = source[i];
}
}
}

最佳答案

在您的代码中:

   last = first;
printf("FIRST: %d\n" , first);
for(i= first; i< length; i++){
if(source[i] == ' '){
last = i-1;
break;
}
}

如果没有空格会怎样?没有什么。最后==第一个。因此,如果第一个字符不是空格,则第一个 = 0。如果没有遇到空格,则最后一个 = 第一个。这意味着最后 = 第一个 = 0。

所以:

    for(i=first; i<= last; i++){
result[i] = source[i];

...除了复制第一个字符之外什么也不做。将代码更改为:

   last = first;
printf("FIRST: %d\n" , first);
for(i= first; i< length; i++){
if(source[i] != ' '){
last = i;
}
else break;
}

关于在 C 中复制字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35529850/

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