C中与数组和打印数组相关的分段错误

C中与数组和打印数组相关的分段错误,c,C,我想实现这一点 ls-l | myprogram Myprogram将管道的输出作为输入,并将每个单词放入数组中。 然后我逐行打印出数组,这样每行中就有8个字 我写了一个代码,但它给出了分段错误,并且没有打印我的单词数组。这里怎么了?这里是初学者 #include <stdio.h> #include <string.h> int main(int argc, char **argv){ int result,i; int j=0

我想实现这一点 ls-l | myprogram

Myprogram将管道的输出作为输入,并将每个单词放入数组中。 然后我逐行打印出数组,这样每行中就有8个字

我写了一个代码,但它给出了分段错误,并且没有打印我的单词数组。这里怎么了?这里是初学者

    #include <stdio.h>
    #include <string.h>
    int main(int argc, char **argv){

    int result,i;
    int j=0;
    char string[80];   
    char  wordArray [80];


    do {    
           result=scanf("%s",string);

           strcpy(wordArray[j], string);
           printf("%s\n", wordArray[j]);
           j++;

    }
           while (result!=EOF);

    for (i=0; i<7;i++){
    printf("%s ",wordArray[i]);

   }                   
    return 0;
 }
#包括
#包括
int main(int argc,字符**argv){
int结果,i;
int j=0;
字符串[80];
字符字数组[80];
做{
结果=扫描频率(“%s”,字符串);
strcpy(字数组[j],字符串);
printf(“%s\n”,wordArray[j]);
j++;
}
而(结果!=EOF);

对于(i=0;i至少此函数调用无效

strcpy(wordArray[j], string);
参数
wordArray[j]
具有类型
char
,而函数的第一个参数具有类型
char*

您必须定义一个字符数组

char  wordArray[7][80];
前提是输入的字符串数量不超过7

考虑到第二个循环应该是

for ( i = 0; i < j; i++ ){
(i=0;i{

此外,第一个循环无效,因为尽管循环最后一次迭代的结果等于EOF,但您仍尝试在数组中复制未输入的字符串
string
(由于结果等于EOF,则表示未输入任何内容。因此,最后一个有效字符串将被复制两次)wordArray仅为一维。请尝试添加[8][80]


变量wordArray是一个字符串,就像变量字符串一样。如果你想让它成为一个字符串数组,你需要一个二维数组,比如:char wordArray[1000][80]没有“单词数组”在程序中声明。您有一个字符数组。您试图读取字符串,然后将其复制到一个没有足够空间存储的数组中。