Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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语言逐字打印句子,不使用string.h_C_Arrays_Function_Pointers - Fatal编程技术网

用C语言逐字打印句子,不使用string.h

用C语言逐字打印句子,不使用string.h,c,arrays,function,pointers,C,Arrays,Function,Pointers,我目前正在学习如何用C语言编程。作为额外的练习,老师给了我一些问题。 这就是我的问题所在,我必须在我的程序中使用它:void strsplitokens(char*s1,char s2[][],int*numWords) void strSplitTokens (char *s1, char s2[][], int *numWords); 下面是问题的其余部分:对strsplitokens的调用将字符串s1分解为单词,然后将每个单词保存在一个不同的字符数组中,所有字符串保存在单个字符数组中。此

我目前正在学习如何用C语言编程。作为额外的练习,老师给了我一些问题。 这就是我的问题所在,我必须在我的程序中使用它:
void strsplitokens(char*s1,char s2[][],int*numWords)

 void strSplitTokens (char *s1, char s2[][], int *numWords);
下面是问题的其余部分:对strsplitokens的调用将字符串s1分解为单词,然后将每个单词保存在一个不同的字符数组中,所有字符串保存在单个字符数组中。此外,它还可以使用numWords中的指针来节省字数。使用以下命令打印主屏幕中的字符串:


For(i=0;i逐个字符检查。将每个字符放入二维数组中,直到空格出现

i=0;j=0;k=0;  
while(s[k]!='\n') {
    if(s[k]!=' ')
    {
        s1[i][j]=s[k];
        k++; 
        j++;
    }
    else{
        j=0;i++;
    }

}

请发布您目前拥有的代码。您可能应该这样做,遍历字符串,当遇到字母数字字符时,首先将该字符放入临时数组并递增计数器,对每个字符执行此操作,直到找到一个空格,现在
malloc(sizeof(char)*(count+1))
并将单词复制到新空间,对每个单词执行此操作。您正在从strsplitokens(递归)调用strsplitokens。我很确定您不想这样做。@Gille我的代码很少。我正在努力编写任何东西,同时仍然使用必需的函数。@user1855131没有问题,那么您如何在字符串中找到一个单词呢?我会搜索“”(基本上是strchr)。然后在循环中realloc s2以适应额外的单词并将其加起来。如果在“”之前找到“\n”或“\0”,则完成了!您不想在else中增加k吗?因为如果我没有弄错的话,您现在使用的方式将使代码在找到空格时无限循环。
#include <stdio.h>
void strSplitTokens (char *s1, char s2[][], int *numWords);
int main()
{
    printf("Enter a sentence: ");
    strSplitTokens();

 For(i=0;i<numWords;i++) 
{
        printf("%s\n",s2[i]);
}
    return 0;
}
void strSplitTokens (char *s1, char s2[][], int *numWords);
{
    char s1;
    scanf("%s",&s1);
    if( s1 != '\n')
    {
        strSplitTokens();

    }
}
i=0;j=0;k=0;  
while(s[k]!='\n') {
    if(s[k]!=' ')
    {
        s1[i][j]=s[k];
        k++; 
        j++;
    }
    else{
        j=0;i++;
    }

}