在C字符添加到字符串
问题描述:
我有这个功能称为add_to_string
,我把它从我的主要功能为char添加到字符串在C字符添加到字符串
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
字符串
编译启用所有警告......你有几个误用,并键入任何像样的编译器将突出马上错误。 – StoryTeller
我并没有真正明白你的意思,但我想你的意思是字符串和get_string(),这是一个正在采用的课程,他们为我们提供了这个包含这些类型和功能的cs50标题,例如 –
。 [man strncat](https://linux.die.net/man/3/strncat):'char * strncat(char * dest,const char * src,size_t n);'。第二个参数的类型是什么,你给它的类型是什么? – kaylum