gpt4 book ai didi

c - 你好。我的程序总是无法创建我期望的字符串输出。你能注意到一个缺陷吗?

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

此函数旨在用第一个字符串的过滤结果填充第二个字符串。过滤器应该删除所有特殊字符,只打印所有字母的小写排列

我试过改变“ModifyText”循环的性质,我用指针+while 循环和 for 循环完成了这两个循环,条件是当迭代器到达字符\0 时结束。这些是我已经尝试过的方法,两者都继续只返回字符串中第一个单词的小写“the”,而不是只返回小写字母的整个字符串

#include <stdio.h>
#include <ctype.h>
#include <string.h>
//
//int ModifyText(char Stringboy[], char output[])
//{
// for(int i=0; Stringboy[i] != '\0'; i++)
// {
// if(Stringboy[i] >= 'A' && Stringboy[i] <= 'Z')
// {
// output[i] = Stringboy[i] + 32;
//
// }
// else if(Stringboy[i] >= 'a' && Stringboy[i] <= 'z')
// {
// output[i] = Stringboy[i];
// }
//}}

int ModifyText(char *Stringboy, char *output)
{
while(*Stringboy != '\0')
{
if(*Stringboy >= 'A' && *Stringboy <= 'Z')
{
*output = *Stringboy + 32;

}
else if(*Stringboy >= 'a' && *Stringboy <= 'z')
{
*output = *Stringboy;
}
++Stringboy;
++output;
}
}

int main(void){
char samplearray[] = {"THE quick Brown Fox jumps over the Lazy Dog!***!"};
char dummy[83];
printf("Original Text: \n %s\n", samplearray);
ModifyText(samplearray, dummy);
printf("Modified Text: \n %s\n", dummy);
//letterCounter(dummy); //these two bottom functions have their prints written into them, so they need only be called
//wordCounter(dummy);

printf("length of sample array is %d", strlen(samplearray));
}

这段代码只返回一个字符串“the”,而它应该在名为 dummy 的字符串中返回一个字符串“the quick brown fox jumps over the lazy dog”

最佳答案

当 *Stringboy 是一个空格时,你不设置 *output 因为如果条件不成立。但是,您确实会增加输出。结果,输出中“the”之后的字符将是随机数据(在您的情况下可能是 NULL),这就是字符串结束的原因。

将代码改成这样:

while(*Stringboy != '\0')
{
if(*Stringboy >= 'A' && *Stringboy <= 'Z')
{
*output = *Stringboy + 32;
}
else
{
*output = *Stringboy;
}

++Stringboy;
++output;
}

*output = '\0';

这样空格将被写入输出字符串。

关于c - 你好。我的程序总是无法创建我期望的字符串输出。你能注意到一个缺陷吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58644065/

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