gpt4 book ai didi

c - 给定数组中有多少个字符(除了空格)

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

我试图找出给定数组中除了空格之外还有多少个字符但它不起作用, k 应该计算空白并从 i[字符 + 空白] 中减去它们,但事实并非如此。

int i= 0;
int n= 0;
int k= 0;
char c[256] = {};
fgets(c ,256, stdin);

while(c[i] != '\0' ){
if(c[i] == ' '){
i++;
k++;
continue;}
i++;}


printf("%d",i-k);

最佳答案

这里很少观察

fgets(c ,256, stdin);

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

的手册页

If a newline is read, it is stored into the buffer. A terminating null byte ('\0') is stored after the last character in the buffer

首先删除尾随的 \n,然后对其进行迭代。例如

fgets(c, sizeof(c), stdin);
c[strcspn(c, "\n")] = 0; /* remove the trailing \n */

这里也不需要使用继续,即您可以在不使用它的情况下完成任务。例如

int main(void) {
int i= 0;
int k= 0;
char c[256] = ""; /* fill whole array with 0 */
fgets(c, sizeof(c), stdin);
c[strcspn(c, "\n")] = 0; /* remove the trailing \n */
while(c[i] != '\0' ){ /* or just c[i] */
if(c[i] == ' ') {
k++; /* when cond is true, increment cout */
}
i++; /* keep it outside i.e spaces or not spaces
this should increment */
}
printf("spaces [%d] without spaces [%d]\n",k,i-k);
return 0;

}

关于c - 给定数组中有多少个字符(除了空格),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53975594/

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