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

int main()
{
    char string[100];
    int count=0;

    char *pString = string;

    printf("Enter a string: \n");
    scanf("%s",string);

    while(*pString != '\0')
        count++;

    printf("String is %d characters long",count);


    return 0;
}


这是我的代码。我想编写一个简单的函数来计算字符串数组中的字符数。问题是输入字符串后卡住了。而且控制台冻结了。它不会释放输出。

最佳答案

您可以使用类似

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

int main() {
    char string[100];
    int count = 0;

    printf("Enter a string: \n");
    char *pString = fgets(string, sizeof(string), stdin);
    if (pString == NULL) {
        fprintf(stderr, "failure reading from stdin\n");
        exit(1);
    }
    while (*pString != '\0' && *pString != '\n') {
        pString++;
        count++;
    }

    printf("String is %d characters long", count);
    return 0;
}


它使用fgets,它还会检查缓冲区的长度。 fgets还返回用户输入的换行符,因此对“ \ n”进行了附加检查。就像在arvin提到的注释中一样,char指针也需要在循环中增加。

09-25 19:50