仅在大小合适时才使用值

时间:2015-04-02 15:14:39

标签: c

代码的目标是,如果用户插入一个大于X个字符的名称,我请求一个新名称,直到他插入一个带有或少于X个字符的名称。我有以下代码:

char * getName(){
    int size = 4;
    int i;
    char inserted[10];
    char name[4];
    while (size > 3){
        printf("Insert name, maximum 3 characters: ");
        fgets(inserted, 10, stdin);
        for (i=0; i<4; i++){
            if (inserted[i] == '\n'){
                size = 3;
            }
        }
    }
    sscanf(inserted,"%s", name); 
    return name;
}

但似乎它不起作用.....我试过调试但却找不到错误。如果你能伸出援助之手,那就太好了。

编辑:我编辑了代码,出现了错误

编辑:问题不在于是否返回值,但是函数是否处于无限循环中 - 似乎无法找到单词是否具有正确的长度

2 个答案:

答案 0 :(得分:2)

编辑:

您无法从函数返回本地变量地址[name]。您需要动态分配内存才能返回指针。您可以使用malloc()之类的

char * name = NULL;
name = malloc(4);

然后,从main()开始,您必须使用free()内存。


旧答案:

首先,您必须将char name[3];更改为char name[4];,以便为终止空值腾出空间。

在您的代码中,更改

for (i=0; i<4; i++){
    if (name[i] == "/n")

for (i=0; i<4; i++){
     if (inserted[i] == '\n')

答案 1 :(得分:0)

您正在将字符串文字与字符进行比较。您应该将"\n"更改为'\n',以便您比较字符。您还将返回指向局部变量的指针。您应该使用malloc返回在堆上分配的内存。