2017-04-12 3 views
-2

私は学生名、姓、IDを取得するためのコードを実行してから安定したフォーマットで印刷しようとしています。例:(名前と姓を入力してください: "Alp David Oflas" ID: "20110702037"を入力すると、 "OFLAS、Alp David、2011年に37番目の学生としてEngineeringに参加しました。")ので、 ID部分を除いてrepl.it上のコード私はgettin "非ゼロステータスで終了"エラーと私はUbuntuでtryinだよ "私はgettin"セグメンテーションフォールト(コアダンプ) "です。したがって、この問題は4時間まで解決できません。コードのどの部分がそのエラーを引き起こすのを助けてくれますか?文字列のセグメンテーションフォールトC

注:他の機能は使用できません。私はループと比較でそれを行う必要があります。

#include <stdio.h> 

void output(char name[100],char ID[100]){ 

    char surname[100]; 
//Calculating name string's length//  
    int nameL; 
    for(nameL=0;name[nameL]!="\0";nameL++); 

    int i=nameL; 
    int j=0; 
    int flag; 
    flag = "FALSE"; 
//Geting surname from value with decreasing i. It could be something like "Alp David Oflas" so we need just surname// 
    while (flag="FALSE"){ 
     if (name[i] == " "){ 
      flag="TRUE"; 
     } 
     else{ 
      surname[j] = name[i]; 
      i--; 
      j++; 
      flag = "FALSE"; 
     } 
    } 
    surname[j]="\0"; 
//Previous surname just be like "salfO" so need to convert it// 
    char newsurname[100]; 
    int surnameL; 
    for(surnameL=0;surname[surnameL] !="\0";surnameL++); 
    int k=0; 

    while (surname[k] != "\0"){ 
     newsurname[k]=surname[surnameL]; 
     k++; 
     surnameL--; 
    } 
    newsurname[k] = "\0"; 

//Just capitalizing surname for dependant output// 
    int x=0; 
    while (newsurname[x] !="\0"){ 
     if (newsurname[x] >= "a" && newsurname[x] <= "z"){ 
      newsurname[x] = (newsurname[x] -32); 
     } 
     x++; 
    }   

    printf("%s",newsurname); 

} 

//Geting values from keyboard// 
int main(){ 

    char name[100]; 
    char ID[100]; 
    printf("Enter name and surname:\n"); 
    gets (name); 
    printf("Enter ID:\n"); 
    gets (ID); 
    output(name,ID); 
    return 0; 
} 
+0

各警告を調べます。 –

+0

@DavidSchwartz like( "gets"は使用しないでください) –

+1

'int flag;フラグ= "FALSE"; while(flag = "FALSE") 'は完全には見えません。 – Pang

答えて

0

解決しよう...それは'\0'でなければなりません"\0"上の問題。

関連する問題