gpt4 book ai didi

c - 如何正确更改c中char []中的元素

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

我正在尝试创建一个函数,该函数从文件中获取单词,然后通过删除任何标点符号或引号将其标准化。我遇到的问题是,当我有一个单词前面有 " 或前面和后面都有 "how" 时,我会这样输出:

"howw"
howwETX
"well
"wel

如何阻止这种情况发生?

char *normalize( int count, char entry[], char output[] ){

count--;/* to allow for the zero index of an array*/

if( entry[0] == '"' && entry[count] == '"' ){
for(int i=1 , j=0;j < count - 1; i++,j++ ){
output[j] = entry[i];
}
output[count + 1 ] = '\0';
return output;

}else if( entry[0] == '"' ){
for(int i = 0 , j=0; j < count; i++, j++ ){
output[j] = entry[i];
}
output[count++] = '\0';
return output;

} else if( entry[count] == '"' || ispunct( entry[count] ) ){
for(int i=0 , j=0;i < count; i++,j++ ){
output[j] = entry[i];
}
output[count] = '\0';
return output;
}

return entry;
}/* ends normalize( int count, char entry[], char output[] )*/

最佳答案

让我们玩一下调试器。假设您的输入是这样的:

entry == "a"
count == 3

我们开始执行,结果如下:

count == 2

i == 1
j == 0
output[0] == 'a'

循环退出然后:

output[3] == '\0'

所以现在 output 包含 aa",这是不正确的。解决方案是将 output[count-1] 设置为 null,当循环退出,而不是 count + 1

关于c - 如何正确更改c中char []中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26022961/

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