2015-09-05 36 views
-3

我想回到什么时候该字符串是数 这里是我的代码,当串号C语言

#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

你好,欢迎来到堆栈溢出!这个网站是一个问答网站,所以你需要实际上1 /问一个关于_specific_问题的问题2 /显示你想要解决问题的方法,并得到你可能有的_issues_的帮助。这样做,我们感谢您获得一个强调您的问题的最简洁,可验证的例子。 – zmo

+0

这就是说,你的_actual_问题是什么?你的代码确实很好,但它不适用于跳过由数字组成的单词。你可能想修改你的'findWord()'函数来实际执行。你尝试过什么吗?你有问题吗?您在'findWord()'函数中尝试使用usinc [isdigit()](http://linux.die.net/man/3/isdigit)跳过仅由数字组成的单词吗? – zmo

+0

代码很可能具有UB,因为'Copyword'被分配的内存等于字符串's'的长度,并且所有这些内存都被填充.NO空间用于''\ 0''。所以'malloc(strlen(s)+1)'应该完成。 – ameyCU

回答

0

对于初学者来说:你传递一个非0封端的C-“串”(Copyword),以findWord()并在那里调用strlen()上它。这只是不会因运气不佳而崩溃。

+0

请问我可以如何改进我的代码。我知道我需要一些条件,但我不知道如何解决。 – user3624415

+1

@ user3624415:您可能想阅读http://ericlippert.com/2014/03/05/how-to-debug-small-programs/以了解如何提供帮助。 – alk