C中与数组和打印数组相关的分段错误
我想实现这一点 ls-l | myprogram Myprogram将管道的输出作为输入,并将每个单词放入数组中。 然后我逐行打印出数组,这样每行中就有8个字 我写了一个代码,但它给出了分段错误,并且没有打印我的单词数组。这里怎么了?这里是初学者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
#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]没有“单词数组”在程序中声明。您有一个字符数组。您试图读取字符串,然后将其复制到一个没有足够空间存储的数组中。