编写c程序将前缀附加到输入的字符串列表
我对C编程有点陌生,我正在编写一个程序,将前缀附加到用户输入的字符串列表中。 下面是一段代码编写c程序将前缀附加到输入的字符串列表,c,loops,for-loop,C,Loops,For Loop,我对C编程有点陌生,我正在编写一个程序,将前缀附加到用户输入的字符串列表中。 下面是一段代码 char names[5][20], prefix[5]; int i=0; // accept 5 names and a prefix printf("Please enter the 5 names and a prefix\n"); for(i;i<=4;i++ ) { printf("Enter name %d\n ",i+1); scanf("%s", &nam
char names[5][20], prefix[5];
int i=0;
// accept 5 names and a prefix
printf("Please enter the 5 names and a prefix\n");
for(i;i<=4;i++ )
{
printf("Enter name %d\n ",i+1);
scanf("%s", &names[i]);
}
printf("prefix: \n ");
scanf("%s", &prefix);
printf("\n\n\n");
for(i=0;i<=4;i++)
{
strcat(prefix,names[i]);
printf("%s\n", prefix);
}
数组
前缀
有五个元素。names
中的子数组有20个元素
即使每个字符串只有一个字符长,也将是一个六个字符的字符串(不包括字符串零终止符,即七个字符)。这不适合五个字符的数组
您需要将前缀的长度增加相当多
它也不是在做你想做的事情,因为这不是strcat的工作方式
如果只想打印带有前缀的字符串,请执行以下操作:
printf("%s%s\n", prefix, names[i]);
如果您希望为字符串添加前缀以供以后使用,那么我建议为前缀字符串使用第二个数组:
char prefixed_names[5][25];
for (size_t i = 0; i < 5; ++i)
{
strcpy(prefixed_names[i], prefix); // Copy the prefix to the new string
strcat(prefixed_names[i], names[i]); // Append the name
}
char前缀_名称[5][25];
对于(尺寸i=0;i<5;++i)
{
strcpy(前缀为_names[i],prefix);//将前缀复制到新字符串
strcat(前缀为_names[i],names[i]);//附加名称
}
数组前缀
有五个元素。names
中的子数组有20个元素
即使每个字符串只有一个字符长,也将是一个六个字符的字符串(不包括字符串零终止符,即七个字符)。这不适合五个字符的数组
您需要将前缀的长度增加相当多
它也不是在做你想做的事情,因为这不是strcat的工作方式
如果只想打印带有前缀的字符串,请执行以下操作:
printf("%s%s\n", prefix, names[i]);
如果您希望为字符串添加前缀以供以后使用,那么我建议为前缀字符串使用第二个数组:
char prefixed_names[5][25];
for (size_t i = 0; i < 5; ++i)
{
strcpy(prefixed_names[i], prefix); // Copy the prefix to the new string
strcat(prefixed_names[i], names[i]); // Append the name
}
char前缀_名称[5][25];
对于(尺寸i=0;i<5;++i)
{
strcpy(前缀为_names[i],prefix);//将前缀复制到新字符串
strcat(前缀为_names[i],names[i]);//附加名称
}
如果我了解您将实现的目标:
char names[5][20], prefix[5];
char tmp[32];
int i=0;
// accept 5 names and a prefix
printf("Please enter the 5 names and a prefix\n");
for(i;i<=4;i++)
{
printf("Enter name %d\n ",i+1);
scanf("%s", &names[i]);
}
printf("prefix: \n ");
scanf("%s", &prefix);
printf("\n\n\n");
for(i=0;i<=4;i++)
{
strcpy(tmp, prefix);
strcat(tmp, names[i]);
printf("%s\n", tmp);
}
字符名[5][20],前缀[5];
char-tmp[32];
int i=0;
//接受5个名称和一个前缀
printf(“请输入5个名称和前缀\n”);
对于(i;i如果我了解您将实现的目标:
char names[5][20], prefix[5];
char tmp[32];
int i=0;
// accept 5 names and a prefix
printf("Please enter the 5 names and a prefix\n");
for(i;i<=4;i++)
{
printf("Enter name %d\n ",i+1);
scanf("%s", &names[i]);
}
printf("prefix: \n ");
scanf("%s", &prefix);
printf("\n\n\n");
for(i=0;i<=4;i++)
{
strcpy(tmp, prefix);
strcat(tmp, names[i]);
printf("%s\n", tmp);
}
字符名[5][20],前缀[5];
char-tmp[32];
int i=0;
//接受5个名称和一个前缀
printf(“请输入5个名称和前缀\n”);
因为(i;istrcat()
不是那样工作的。strcat()
中的cat
更像是“复制到结尾”,而不是“连接到”。strcat()
不是那样工作的。strcat()
中的cat
更像是“复制到结尾”,而不是“连接到”。现在看起来好多了。您是否可以使用strcpy()
而不先初始化数组?我记得读过,您应该先执行类似chararray[0]的操作=0
,这样我们就可以确保其中没有垃圾,并且字符串被正确地识别为空字符串。不过,也许我弄错了?@domssonstrcpy
函数只是覆盖目标中已经存在的内容。它不需要以任何方式初始化目标。strcat
另一方面,函数需要一个以零结尾的字符串才能在目标中。啊,我明白了。很高兴知道这一点,谢谢你帮我清理它!现在看起来好多了。你能使用strcpy()
而不先初始化数组吗?我记得读过,你应该先做chararray[0]之类的事情=0
,这样我们就可以确保其中没有垃圾,并且字符串被正确地识别为空字符串。不过,也许我弄错了?@domssonstrcpy
函数只是覆盖目标中已经存在的内容。它不需要以任何方式初始化目标。strcat
另一方面,函数需要一个以零结尾的字符串才能到达目标。啊,我明白了。很高兴知道这一点,谢谢你为我清理它!