gpt4 book ai didi

c - 为什么不打印我的 char 数组指针?

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

我被分配了用 C 语言编写生产者/消费者程序的任务。生产者过程方法如下所示,它试图从用户输入的字符串 (producerString) 中捕获元音。但是,我无法测试是否正确创建了 vowelString

我确定该方法运行完成,但在执行第二个 printf 时没有打印任何内容。它与我如何打印指针有关吗?

char * Producer(char producerString[])          //PRODUCER FUNCTION
{
char *vowelString = (char *) malloc(sizeof(char) * 100);
vowelString = ""; //String used to append vowels to

printf("In Producer with producerString = %s\n", producerString);

for (int i = 0; producerString[i] != '\0'; i++)
{
if (producerString[i] == 'a' || producerString[i] == 'e' || producerString[i] == 'i' || producerString[i] == 'o' || producerString[i] == 'u' || producerString[i] == 'y')
{
int len = strlen(vowelString);
vowelString[len] = i;
vowelString[len + 1] = '\0';
}
else if (producerString[i] == 'p')
{
exit(0);
}
}

printf("In Producer with vowelString = %s\n", vowelString);

return vowelString; //Return vowels string
}

我也尝试在从 Producer 方法返回后在 Main 方法中打印它,方法如下:

char *producedString = Producer(inString);

printf("The produced string: %s\n", producedString);

这也不起作用,但我认为这是同一问题的结果。

在此先感谢您的帮助,并感谢任何其他提示。

最佳答案

vowelString = ""; 不是您初始化动态分配字符串的方式。这是指派指针指向静态文字字符串,它不再指向 malloc 的内存。文字字符串不可修改,因此当您写入 vowelString[i] 时会导致未定义的行为。

将该行更改为:

vowelString[0] = '\0';

此外,

vowelString[len] = i;

应该是:

vowelString[len] = producerString[i];

但不是每次循环都调用 strlen(),您可以在函数开始时简单地将 len 初始化为 0 , 并在每次添加元音时增加它。

char * Producer(char producerString[])          //PRODUCER FUNCTION
{
char *vowelString = (char *) malloc(sizeof(char) * 100);

printf("In Producer with producerString = %s\n", producerString);

int len = 0;
for (int i = 0; producerString[i] != '\0'; i++)
{
if (producerString[i] == 'a' || producerString[i] == 'e' || producerString[i] == 'i' || producerString[i] == 'o' || producerString[i] == 'u')
{
vowelString[len++] = producerString[i];
}
else if (producerString[i] == 'p')
{
exit(0);
}
}
vowelString[len] = '\0';

printf("In Producer with vowelString = %s\n", vowelString);

return vowelString;
}

关于c - 为什么不打印我的 char 数组指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47404017/

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