gpt4 book ai didi

c - 从 C 中的字符串/字符数组中删除空格的函数

转载 作者:太空狗 更新时间:2023-10-29 17:27:29 24 4
gpt4 key购买 nike

提出的问题here与我遇到的问题非常相似。不同之处在于,我必须将参数传递给删除空格并返回结果字符串/字符数组的函数。我得到了删除空格的代码,但由于某种原因,我留下了原始数组遗留下来的尾随字符。我什至尝试了 strncpy,但我遇到了很多错误。

这是我目前所拥有的:

#include <stdio.h>
#include <string.h>
#define STRINGMAX 1000 /*Maximium input size is 1000 characters*/

char* deblank(char* input) /* deblank accepts a char[] argument and returns a char[] */
{
char *output=input;
for (int i = 0, j = 0; i<strlen(input); i++,j++) /* Evaluate each character in the input */
{
if (input[i]!=' ') /* If the character is not a space */
output[j]=input[i]; /* Copy that character to the output char[] */
else
j--; /* If it is a space then do not increment the output index (j), the next non-space will be entered at the current index */
}
return output; /* Return output char[]. Should have no spaces*/
}
int main(void) {
char input[STRINGMAX];
char terminate[] = "END\n"; /* Sentinal value to exit program */

printf("STRING DE-BLANKER\n");
printf("Please enter a string up to 1000 characters.\n> ");
fgets(input, STRINGMAX, stdin); /* Read up to 1000 characters from stdin */

while (strcmp(input, terminate) != 0) /* Check for que to exit! */
{
input[strlen(input) - 1] = '\0';
printf("You typed: \"%s\"\n",input); /* Prints the original input */
printf("Your new string is: %s\n", deblank(input)); /* Prints the output from deblank(input) should have no spaces... DE-BLANKED!!! */

printf("Please enter a string up to 1000 characters.\n> ");
fgets(input, STRINGMAX, stdin); /* Read up to another 1000 characters from stdin... will continue until 'END' is entered*/
}
}

最佳答案

input 中删除空格后,您没有使用空终止符 (\0) 终止它,因为新长度小于或等于原始长度字符串。

只需在 for 循环的末尾 nul 终止它:

char* deblank(char* input)                                         
{
int i,j;
char *output=input;
for (i = 0, j = 0; i<strlen(input); i++,j++)
{
if (input[i]!=' ')
output[j]=input[i];
else
j--;
}
output[j]=0;
return output;
}

关于c - 从 C 中的字符串/字符数组中删除空格的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13084236/

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