Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写c程序将前缀附加到输入的字符串列表_C_Loops_For Loop - Fatal编程技术网

编写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

我对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", &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;i
strcat()
不是那样工作的。
strcat()
中的
cat
更像是“复制到结尾”,而不是“连接到”。
strcat()
不是那样工作的。
strcat()
中的
cat
更像是“复制到结尾”,而不是“连接到”。现在看起来好多了。您是否可以使用
strcpy()
而不先初始化数组?我记得读过,您应该先执行类似
chararray[0]的操作=0
,这样我们就可以确保其中没有垃圾,并且字符串被正确地识别为空字符串。不过,也许我弄错了?@domsson
strcpy
函数只是覆盖目标中已经存在的内容。它不需要以任何方式初始化目标。
strcat
另一方面,函数需要一个以零结尾的字符串才能在目标中。啊,我明白了。很高兴知道这一点,谢谢你帮我清理它!现在看起来好多了。你能使用
strcpy()
而不先初始化数组吗?我记得读过,你应该先做
chararray[0]之类的事情=0
,这样我们就可以确保其中没有垃圾,并且字符串被正确地识别为空字符串。不过,也许我弄错了?@domsson
strcpy
函数只是覆盖目标中已经存在的内容。它不需要以任何方式初始化目标。
strcat
另一方面,函数需要一个以零结尾的字符串才能到达目标。啊,我明白了。很高兴知道这一点,谢谢你为我清理它!