gpt4 book ai didi

c - 将一个字符添加到c中的字符串

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

我有一个名为 add_to_string 的函数,我从我的主函数中调用它来将一个字符添加到一个字符串中

add_to_string(name[I]);

在我看来,我无法将 char 附加到字符串中。那么我该如何解决这个问题呢?

我在这段代码中的主要目的是简单地打印输入的姓名缩写并避免用户输入错误(在名字和中间名之间添加两个空格)

这是我的完整代码

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

string add_to_string (char letter);
string result;

int main (void)
{
printf("pleas enter your full name: ");
string name = get_string();
int len = strlen(name);
for (int i = 0; i < len; i++)
{
if (i == 0)
{
add_to_string(name[i]);
} else if (name[i] == ' ')
{
if (name[i + 1] != ' ')
{
add_to_string(name[i]);
}
}
}

printf("%s\n",result);
}

string add_to_string (char letter)
{

strncat(result, letter, 30);
return result;
}

最佳答案

我不确定这里的 string 是什么,但我认为它是 char* 的 typedef

你的函数

string add_to_string (char letter)
{
strncat(result, letter, 30);
return result;
}

在几个方面是错误的,

第一个 result 是一个全局变量,所以它最初指向 NULL。

您需要为您的字符串分配存储空间并让result 指向该存储空间或将result 声明为数组

char result[128]; // assuming here it is still global otherwise initialize

add_to_string 函数将一个字符添加到字符串中,但您调用 strncat,它需要两个字符串作为参数加上一个大小。

而是像这样追加字符

size_t len = strlen(result)
result[ len++ ] = letter;
result[ len ] = '\0';

这使 result 成为一个字符串

关于c - 将一个字符添加到c中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42424966/

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