gpt4 book ai didi

c - 编程用一个空格替换由一个或多个空格组成的字符串。不能使用任何库函数。这不是 EOF 版本

转载 作者:行者123 更新时间:2023-11-30 20:58:08 24 4
gpt4 key购买 nike

/*   ============================================================================
Name : 3_1-9.c
Author : Arvind Bakshi
Version :
Copyright : AbcoolCoding
Description : Program to Replace a string of one or more blanks with a single blank
============================================================================
*/
#include <stdio.h>
#include <stdlib.h>
#define NOBLANK 'a'
int main(void) {
setbuf(stdout,NULL);
char string[30],out[30];
int i;
puts("Enter a String of size < 30");
fgets(string,sizeof(string),stdin);
for(i=0; string[i]; i++){
if(string[i]!=' ')
out[i]=string[i];
}
puts(out);
return EXIT_SUCCESS;
}

上面的程序无法缩小字符串中多个空格。请注意,除了 stdio.h 之外,不允许使用任何库函数。您可以在 - https://github.com/abcool/C_training/blob/Chapter-1/01_1.5.3_1-9.c 找到代码 Output of the above code when run on codechef.com/ide

最佳答案

这是我对您提到的代码的观察,首先在这里

fgets(string,sizeof(string),stdin);

fgets() 如果读取,则将 \n 字符存储在缓冲区末尾。来自fgets()

的手册页

fgets() reads in at most one less than size characters from stream and stores them into the buffer pointed to by s. Reading stops after an EOF or a newline. If a newline is read, it is stored into the buffer.

您需要删除尾随的 \n 字符。一种方法是使用 strcspn()。例如

string[strcspn(string, "\n")] = 0;

其次,这里

out[i]=string[i];

对于out数组,您应该使用不同的索引而不是i。例如

int count = 0;
for(i=0; string[i]; i++){
if(string[i]!=' ')
out[count++]=string[i]; /* use count for out */
}

然后将\0字符放在out的末尾。

out[count] = '\0';

关于c - 编程用一个空格替换由一个或多个空格组成的字符串。不能使用任何库函数。这不是 EOF 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54050512/

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