当字符串是数字C语言时

时间:2015-09-05 11:00:57

标签: c char

我希望在字符串为数字时不返回任何内容 这是我的代码,

#include <string.h>
#include <ctype.h>
int num = 0;

char* findWord(char* subString) {
        char* word = malloc(sizeof(char) * (strlen(subString) + 1));
        int i = 0;
        int Position = 0;
        num = 0;


        while (ispunct(subString[i]) != 0 || isspace(subString[i]) != 0) {
                i++;
        }
        num = i;

        while (ispunct(subString[i]) == 0 && isspace(subString[i]) == 0) {
                word[Position] = subString[i];
                i++;
                Position++;
        }

        word[Position] = '\0';
        return word;
}

char** wordList(const char* s) {
        int len = strlen(s);
        int i = 0;
        char* Copyword = malloc(sizeof(char) * len);
        strncpy(Copyword, s, len);
        char** result = (char**) malloc(sizeof(char*) * (len + 1));    
        char* word = NULL;

        word = findWord(Copyword);
        char* wordEnd = Copyword;

        while (*word != 0) {
                result[i] = word;              
                wordEnd = wordEnd + strlen(word) + num;
                word = findWord(wordEnd);              
                i++;
        }
        result[i] = '\0';
        free(Copyword);
        return result;
}

int main(void) {
        char** words = wordList("1 23 456 789");
        int i = 0;
        while (words[i] != NULL) {
                printf("%s\n", words[i]);
                free(words[i]); // We're done with that word
                i++;
        }
        free(words); // We're done with the list
        return 0;
 }

当字符串是句子时我的代码没问题。 但是,在这种情况下,我希望在字符串为数字时不打印任何内容(就像空格一样)。 但我要去的是

1
23
456
789

我希望得到

nothing shows here! just a space

1 个答案:

答案 0 :(得分:0)

对于初学者:你传递一个非0 - 终止的C - &#34;字符串&#34; (Copyword)至findWord(),并在其上调用strlen()。这不会因为运气不好而导致你的应用程序崩溃。