-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;
}
各警告を調べます。 –
@DavidSchwartz like( "gets"は使用しないでください) –
'int flag;フラグ= "FALSE"; while(flag = "FALSE") 'は完全には見えません。 – Pang