簡體   English   中英

字符串和 isdigit function

[英]strings and isdigit function

#include<stdio.h>
#include<string.h>
#include<ctype.h>
int digit(s1);
int main()
{char s1[10];
printf("\n Type anything you want:\n");
gets(s1);
printf("The number of digits is:%d",digit(s1));
return 0;
}
int digit(char* s1)
{
    int i=0;
  while(*s1)
{
i+= !!isdigit(*s1++);
}
return i;
}

這是我的代碼,我需要找出我給出數字的元素。 我將其更改為無效數字,它現在可以完美運行。

isdigit是在<ctype.h>中聲明的標准 C function 。 您的 function 與之沖突。 為您的 function 選擇不同的名稱。

這將避免有關沖突類型的編譯器消息,但您的程序中還有其他錯誤需要修復。

您提供的代碼有幾個主要問題。 如果講座說要使用gets() ,請將其扔進垃圾桶,請改用fgets() 原因,你可以在這個鏈接中找到:

為什么 get function 如此危險以至於不應該使用?

除此之外,講座似乎甚至沒有為您提供正確傳遞參數或正確傳遞變量 output 值的知識。

我推薦你閱讀一本好的 C 入門書,fe this 推薦書籍列表也可以在這里找到:

權威的 C 書籍指南和列表

只關注一個問題,output:

printf("There are %d digits in your string.");

printf()的這種用法是不正確的。 %d指定的值應該從哪里來? %d格式說明符缺少指向 integer 值或int變量的相應參數,例如:

int a = 10;
printf("a = %d",a);

%d需要一個匹配的int類型的參數來實際打印一個值。 否則行為未定義

這將在所有情況下給出診斷。 永遠不要忽略編譯器警告。


為什么我應該總是啟用編譯器警告?

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

int count_digits(const char *s1);

int main()
{
    char s1[20];
    printf("\n Type anything you want:\n");
    fgets(s1, sizeof(s1), stdin);
    printf("The number of digits is:%d", count_digits(s1));
    return 0;
}

int count_digits(const char* s1)
{
    int count = 0;
    while(*s1) 
    {
        count += !!isdigit(*s1++);
    }
    return count;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM