gpt4 book ai didi

c - 空格不应计入字符串长度

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:22 25 4
gpt4 key购买 nike

此代码获取用户输入,然后使用 256% 长度的字符串。如果结果为 3 且输入为 abc,则输出为 bcd。这很好用。但是,如果输入是例如“嘿,怎么办”,长度是 11,它应该是 10,因为长度不应该包含空格。

如何编写此代码,使其不将空间计入长度?

甚至可以在使用 fgets 的同时实现它吗?

提前谢谢你。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {

char array[20];
int length = 0;
int i;
int key = 256;

printf("input: ");

fgets(array, 20, stdin);

length = strlen(array) - 1;

key = key % length;

if (key > 0) {

for (i = 0; i < length; i++) {

if (array[i] == ' ') {

printf("%c", array[i]);

continue;

}
array[i] = array[i] + key;

printf("%c", array[i]);
}

}

return 0;
}

最佳答案

1) 如果您不想在计算 key 时包含空格,则必须自己编写函数来计算空格数。

2) 代码 length = strlen(array) - 1; 似乎“照顾”了字符串末尾的 '\n'。但是,您不能确定是否存在 '\n'。您需要先检查一下。

3) 执行 key % 0 将是“错误的”,因此也要检查一下

代码可能类似于:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int cnt_spaces(char* arr)
{
int res = 0;
while(*arr)
{
if (*arr == ' ')
{
++res;
}
++arr;
}
return res;
}

int main() {
char array[20];
int length = 0;
int i;
int key = 256;

printf("input: ");

fgets(array, 20, stdin);
length = strlen(array);
if (strlen(array) == 0) return 0; // or add error handling

// Remove \n if present
if (array[length-1] == '\n')
{
array[length-1] = '\0';
--length;
}
printf("len = %d\n", length);

int spaces = cnt_spaces(array);
printf("spaces = %d\n", spaces);

if (length == spaces) return 0; // or add error handling
key = key % (length - spaces);

printf("key = %d\n", key);

if (key > 0) {
for (i = 0; i < length; i++) {
if (array[i] != ' ') {
array[i] = array[i] + key;
}
printf("%c", array[i]);
}
}

return 0;
}

例子:

input:  a b c
len = 5
spaces = 2
key = 1
b c d

关于c - 空格不应计入字符串长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53635000/

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