2013-08-12 5 views
2

Я использую три строки, а затем положить их вместе в одну строку, используя только цикл ...Что не так с этой строковой программой?

Это код:

#include<iostream.h> 
#include<conio.h> 

int main() 
{ 
    int i,j,k; 
    char fn[10]={"Ryan"}; 
    char sn[10]={"Mclaren"}; 
    char ln[10]={"Harris"}; 
    char name[30]; 
    puts(fn); puts(sn); puts(ln); 

    for(i=0;fn!='\0';i++) 
    name[i]=fn[i]; 
    puts(name); 

    for(j=0;sn!='\0';j++) 
    name[i+j+1]=sn[j]; 
    name[i+j+1]=' '; 

    for(k=0;ln!='\0';k++) 
    name[i+j+k+2]=ln[k]; 
    name[i+j+k+2]='\0'; 

    printf("\n%s",name); 
    getch(); 
    return 0; 
} 

Теперь это не дает никаких выходных данных, нет компиляции ошибки. Это выход:

Ryan 
Mclaren 
Harris 

Это выход из функций ставит. Почему выражение для копирования не работает/отображается?

ответ

2

Условное значение для ваших циклов for выглядит неправильно для меня, разве вы не должны проверять нулевой нуль в текущей позиции индекса, а не на всю вещь?

Что-то вроде:

for(i=0;fn[i]!='\0';i++) 
    name[i]=fn[i]; 
    puts(name); 

    for(j=0;sn[j]!='\0';j++) 
    name[i+j+1]=sn[j]; 
    name[i+j+1]=' '; 

    for(k=0;ln[k]!='\0';k++) 
    name[i+j+k+2]=ln[k]; 
    name[i+j+k+2]='\0'; 
Смежные вопросы