C 如何使用换行符的差异拆分字符串?
在这段代码中,我用换行符C 如何使用换行符的差异拆分字符串?,c,C,在这段代码中,我用换行符“\n”的差来拆分字符串。为此,我可以使用strtok,但我没有使用它。我只想从字符串中得到一个特定的子字符串。像 预期结果: printf("%s\n", word[0]); Hello World printf("%s\n", word[1]); How are you? printf("%s\n", word[0]); Hello World How are you? printf("%s\
“\n”
的差来拆分字符串。为此,我可以使用strtok,但我没有使用它。我只想从字符串中得到一个特定的子字符串。像
预期结果:
printf("%s\n", word[0]);
Hello World
printf("%s\n", word[1]);
How are you?
printf("%s\n", word[0]);
Hello World
How are you?
printf("%s\n", word[1]);
d
How are you?
给定结果:
printf("%s\n", word[0]);
Hello World
printf("%s\n", word[1]);
How are you?
printf("%s\n", word[0]);
Hello World
How are you?
printf("%s\n", word[1]);
d
How are you?
我不知道这段代码有什么问题,它给了我这种类型的结果
代码
int main(){
char words[10][10];
int indexCtr = 0, wordIndex = 0, totalWords = 0;
char string[100] = "Hello World\nhow are you?";
for(indexCtr = 0; indexCtr <= strlen(string); indexCtr++){
if(string[indexCtr] == "\n" || string[indexCtr] == '\0'){
words[totalWords][wordIndex] = '\0';
totalWords++;
wordIndex = 0;
}
else{
words[totalWords][wordIndex] = string[indexCtr];
wordIndex++;
}
}
printf("%s\n", words[0]);
}
intmain(){
字符字[10][10];
int indexCtr=0,wordIndex=0,totalWords=0;
字符字符串[100]=“你好,世界\n你好吗?”;
对于(indexCtr=0;indexCtr您已声明
char words[10][10];
因此,这将适合“Hello Worl”,结尾没有空的空间
让他们的话更大。
你确定你不会有超过十个单词吗?在你的循环中也要小心。
很明显,这不是这个字符串的问题,但是要小心
(还要比较字符“\n”而不是注释中指出的字符串文字。)您已经声明
char words[10][10];
因此,这将适合“Hello Worl”,结尾没有空的空间
让他们的话更大。
你确定你不会有超过十个单词吗?在你的循环中也要小心。
很明显,这不是这个字符串的问题,但是要小心
(还要比较字符'\n',而不是注释中指出的字符串文字。)string[indexCtr]=“\n”
应该在比较char
和char*
时发出警告。如果不是,是时候提高警告级别了。应该是string[indexCtr]=='\n'
。仅供参考,这两个句子包括它们的终止符都超过10个字符,因此您违反了单词的低级数组维度并调用未定义的行为。我使用printf(“%s\n”,单词[0])
并编写了字符串[indexCtr]=='\n'
但它给了我结果你好,你怎么样!你读了我说的吗?@WhozCraig是的,我读了并回答了你我没有问任何问题,所以我不清楚你在回答什么。我指出的两件重要的事情是你的代码正常工作的交易破坏者。它们都必须被修复,尤其是后者或你的代码调用未定义的行为,并且您看到的任何输出都是无关的。string[indexCtr]=“\n”
应该在比较char
和char*
时发出警告。如果不是,则是时候提高警告级别了。这应该是string[indexCtr]=='\n'
。仅供参考,这两个句子包括它们的终止符都超过10个字符,因此您违反了单词的低级数组维度并调用未定义的行为。我使用printf(“%s\n”,单词[0])
并编写了字符串[indexCtr]=='\n'
但它给了我结果你好,你怎么样!你读了我说的吗?@WhozCraig是的,我读了并回答了你我没有问任何问题,所以我不清楚你在回答什么。我指出的两件重要的事情是你的代码正常工作的交易破坏者。它们都必须被修复,尤其是后者或你的代码调用未定义的行为,您看到的任何输出都是无关的。谢谢!它得到了解决。谢谢!它得到了解决。