Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何使用换行符的差异拆分字符串?_C - Fatal编程技术网

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是的,我读了并回答了你我没有问任何问题,所以我不清楚你在回答什么。我指出的两件重要的事情是你的代码正常工作的交易破坏者。它们都必须被修复,尤其是后者或你的代码调用未定义的行为,您看到的任何输出都是无关的。谢谢!它得到了解决。谢谢!它得到了解决。