尝试通过将代码分成两个单独的函数来编写c程序以返回字符串长度

时间:2016-12-04 22:59:37

标签: c

我已经浏览了几个例子和视频,觉得在某些我看不到的地方存在一种基本的误解。

#include <stdio.h>
#include <stdlib.h>
int main (void)
{
    char String;
    char *sendString;
    char getString[100];
    int counter;

    *sendString = String;

    printf("\nPlease enter string:\n");
    fgets(getString, 100, stdin);

    int calcLength(counter);

    printf("los1111: %d", counter);

    return 0;
}

int calcLength()
{
    char *sendString[100];
    int counter;
    for(counter = 0; *sendString[counter] != '\0'; counter++);

    printf("los: %d", counter);
    return counter;
}

有几个测试'los'printf函数来查看代码在哪里破解,但不幸的是,这对我没什么影响。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我认为你的结果太复杂了。

在这段代码中:

char String;
char *sendString;
char getString[100];
int counter;

*sendString = String;

如果您只想从fgets计算字符串的长度,则不需要大多数这些char声明。

这可以简单地简化为:

char getstring[100];
int myStrLen;

您只需要为fgets提供字符串缓冲区,以及用于计算最终字符串长度的整数声明myStrLen

此外,您的calcLength()功能存在一些问题。您需要将char []参数传递给此函数,以便它知道计算长度所需的字符串。它真的应该这么简单:

int
calcLength(char sendstring[]) {
    int counter, len = 0;

    for (counter = 0; sendstring[counter] != '\0'; counter++) {
        len++;
    }
    return len;
}

根据所有这些建议,您的代码应如下所示:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define BUFFSIZE 100

int calcLength(char sendstring[]);

int 
main(void) {
    char getstring[BUFFSIZE];
    int myStrLen;

    printf("\nPlease enter string:\n");
    if (fgets(getstring, BUFFSIZE, stdin) != NULL) {
        getstring[strlen(getstring)-1] = '\0'; // To remove '\n' character from fgets()
    }

    myStrLen = calcLength(getstring);

    printf("String length = %d\n", myStrLen);

    return 0;
}

int
calcLength(char sendstring[]) {
    int counter, len = 0;

    // Every valid character found, increment a counter
    for (counter = 0; sendstring[counter] != '\0'; counter++) {
        len++;
    }
    return len;
}

注意:此代码可以改进,但它可以帮助您指明正确的方向。我在代码中添加了一些注释以便澄清。