C 合并字符串后打印时未获得任何输出

C 合并字符串后打印时未获得任何输出,c,C,将一个人的名字、中间名和姓氏组合起来 int main() 这是密码 编译器在运行时不显示任何内容 我找不到错误,帮帮我 它是让某个循环继续这个无穷大还是某个逻辑错误。你所有的循环都是无限的: for(i=0;first_name!='\0';i++) 条件名字!='\0'始终为真。您应该检查名字[i]!='\0': for(i=0; first_name[i] != '\0'; i++) 顺便说一下,要复制字符串,最好使用函数。所有循环都是无限的: for(i=0;first_name!=

将一个人的名字、中间名和姓氏组合起来

int main()

这是密码

编译器在运行时不显示任何内容

我找不到错误,帮帮我


它是让某个循环继续这个无穷大还是某个逻辑错误。

你所有的循环都是无限的:

for(i=0;first_name!='\0';i++)
条件
名字!='\0'
始终为
。您应该检查
名字[i]!='\0'

for(i=0; first_name[i] != '\0'; i++)

顺便说一下,要复制字符串,最好使用函数。

所有循环都是无限的:

for(i=0;first_name!='\0';i++)
条件
名字!='\0'
始终为
。您应该检查
名字[i]!='\0'

for(i=0; first_name[i] != '\0'; i++)

顺便说一下,要复制字符串,最好使用函数。

更干净的方法是使用指针并将输入存储在数组中

#include <stdio.h>

int main (void)
{
    char result[30];
    char *pntResult = result;
    char *appendStr (char *dest, char *strToAppend);

    char *name[3] = { "FirstName", "MiddleName", "LastName" };
    int i;

    for ( i = 0; i < 3; ++i )
        pntResult = appendStr (pntResult, name[i]);

    *(pntResult - 1) = '\0';

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

    return 0;
}

char *appendStr (char *dest, char *strToAppend)
{
    while ( *strToAppend )
        *dest++ = *strToAppend++;

    *dest++ = ' ';

    return dest;
}
#包括
内部主(空)
{
字符结果[30];
char*pntResult=结果;
char*appendStr(char*dest,char*strToAppend);
char*name[3]={“FirstName”、“MiddleName”、“LastName”};
int i;
对于(i=0;i<3;++i)
pntResult=appendStr(pntResult,名称[i]);
*(pntResult-1)='\0';
printf(“%s\n”,结果);
返回0;
}
char*appendStr(char*dest,char*strToAppend)
{
while(*strToAppend)
*dest++=*strToAppend++;
*dest++='';
返回目的地;
}

使用指针并将输入存储在数组中的更干净的方法

#include <stdio.h>

int main (void)
{
    char result[30];
    char *pntResult = result;
    char *appendStr (char *dest, char *strToAppend);

    char *name[3] = { "FirstName", "MiddleName", "LastName" };
    int i;

    for ( i = 0; i < 3; ++i )
        pntResult = appendStr (pntResult, name[i]);

    *(pntResult - 1) = '\0';

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

    return 0;
}

char *appendStr (char *dest, char *strToAppend)
{
    while ( *strToAppend )
        *dest++ = *strToAppend++;

    *dest++ = ' ';

    return dest;
}
#包括
内部主(空)
{
字符结果[30];
char*pntResult=结果;
char*appendStr(char*dest,char*strToAppend);
char*name[3]={“FirstName”、“MiddleName”、“LastName”};
int i;
对于(i=0;i<3;++i)
pntResult=appendStr(pntResult,名称[i]);
*(pntResult-1)='\0';
printf(“%s\n”,结果);
返回0;
}
char*appendStr(char*dest,char*strToAppend)
{
while(*strToAppend)
*dest++=*strToAppend++;
*dest++='';
返回目的地;
}

以下是正确的代码

#include <stdio.h>
int main(){

   int i,j,k;

   char first_name[11]="Gursheesh";

   char middle_name[10]="Singh";    

   char last_name[10]="Chawla";

   char name[30];

   for(i=0;first_name[i]!='\0';i++)

   {

    name[i]=first_name[i];

   }    

   name[i]=' ';

   i++;

   for(j=0;middle_name[j]!='\0';j++)

   {

    name[i+j]=middle_name[j];

   }

   name[i+j]=' ';

   j++;

   for(k=0;last_name[k]!='\0';k++)

   {

    name[i+j+k]=last_name[k];

   }

   name[i+j+k]='\0';

   printf("%s",name);

}
#包括
int main(){
int i,j,k;
char first_name[11]=“Gursheesh”;
char middle_name[10]=“Singh”;
char last_name[10]=“Chawla”;
字符名[30];
对于(i=0;名字[i]!='\0';i++)
{
名字[i]=名字[i];
}    
名称[i]='';
i++;
对于(j=0;中间名称[j]!='\0';j++)
{
名称[i+j]=中间名称[j];
}
名称[i+j]='';
j++;
对于(k=0;姓氏[k]!='\0';k++)
{
姓名[i+j+k]=姓氏[k];
}
名称[i+j+k]='\0';
printf(“%s”,名称);
}

以下是正确的代码

#include <stdio.h>
int main(){

   int i,j,k;

   char first_name[11]="Gursheesh";

   char middle_name[10]="Singh";    

   char last_name[10]="Chawla";

   char name[30];

   for(i=0;first_name[i]!='\0';i++)

   {

    name[i]=first_name[i];

   }    

   name[i]=' ';

   i++;

   for(j=0;middle_name[j]!='\0';j++)

   {

    name[i+j]=middle_name[j];

   }

   name[i+j]=' ';

   j++;

   for(k=0;last_name[k]!='\0';k++)

   {

    name[i+j+k]=last_name[k];

   }

   name[i+j+k]='\0';

   printf("%s",name);

}
#包括
int main(){
int i,j,k;
char first_name[11]=“Gursheesh”;
char middle_name[10]=“Singh”;
char last_name[10]=“Chawla”;
字符名[30];
对于(i=0;名字[i]!='\0';i++)
{
名字[i]=名字[i];
}    
名称[i]='';
i++;
对于(j=0;中间名称[j]!='\0';j++)
{
名称[i+j]=中间名称[j];
}
名称[i+j]='';
j++;
对于(k=0;姓氏[k]!='\0';k++)
{
姓名[i+j+k]=姓氏[k];
}
名称[i+j+k]='\0';
printf(“%s”,名称);
}

他应该使用
strncpy
,因为
name
的容量严格限制为30个字符。如果您知道不能超过限制(这种情况很少发生),则仅使用strcpy(自C11起)。@UniversE Yes或strcpy(自C11起)。在我的回答中,我有所有这些函数的链接。谢谢你,我不知道我怎么会找不到这样一个可怜的错误。他应该使用
strncpy
,因为
name
的容量严格限制为30个字符。如果您知道不能超过限制(这种情况很少发生),则仅使用strcpy(自C11起)。@UniversE Yes或strcpy(自C11起)。我的答案中有所有这些函数的链接。谢谢你,我不知道我怎么会找不到这样一个可怜的错误。我对指针不太了解,我会在学习指针的时候检查它,这是字符串之后我的下一个主题。我对指针不太了解,我会在学习指针的时候检查它,这是以后我的下一个主题串。