我想回到什么时候该字符串是数 这里是我的代码,当串号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 /问一个关于_specific_问题的问题2 /显示你想要解决问题的方法,并得到你可能有的_issues_的帮助。这样做,我们感谢您获得一个强调您的问题的最简洁,可验证的例子。 – zmo
这就是说,你的_actual_问题是什么?你的代码确实很好,但它不适用于跳过由数字组成的单词。你可能想修改你的'findWord()'函数来实际执行。你尝试过什么吗?你有问题吗?您在'findWord()'函数中尝试使用usinc [isdigit()](http://linux.die.net/man/3/isdigit)跳过仅由数字组成的单词吗? – zmo
代码很可能具有UB,因为'Copyword'被分配的内存等于字符串's'的长度,并且所有这些内存都被填充.NO空间用于''\ 0''。所以'malloc(strlen(s)+1)'应该完成。 – ameyCU