【问题标题】:Segmentation Fault on String C字符串 C 上的分段错误
【发布时间】:2017-09-07 14:12:03
【问题描述】:

我正在尝试编写代码以获取学生姓名、姓氏和 ID,然后以稳定的格式打印。示例:(输入姓名和姓氏:“Alp David Oflas”输入 ID:“20110702037”然后输出应类似于“OFLAS,Alp David,2011 年作为第 37 名学生加入工程学。”)所以我正在尝试这样做除了 ID 部分但在 repl.it 上的代码我开始出现“以非零状态退出”错误,当我在 Ubuntu 上尝试时,我开始出现“分段错误(核心转储)”。所以直到4小时才能解决这个问题。你能帮我看看是哪部分代码导致了这个错误吗?

注意:我不能使用任何其他功能。我必须通过循环和比较来做到这一点。

#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 喜欢(不要使用“gets”)
  • int flag; flag = "FALSE"; while (flag="FALSE") 看起来根本不对。
  • 嗯标志必须是正确的字符串但仍然是同样的错误

标签: c segmentation-fault coredump


【解决方案1】:

已解决..."\0" 上的问题,它必须是 '\0'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多