gpt4 book ai didi

c - C 中与数组相关的段错误以及以正确方式打印数组

转载 作者:行者123 更新时间:2023-11-30 20:06:16 25 4
gpt4 key购买 nike

我想实现这个ls -l |我的程序。

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;
}

最佳答案

至少这个函数调用是无效的

strcpy(wordArray[j], string);

参数 wordArray[j] 的类型为 char,而函数的第一个参数的类型为 char *

您必须定义一个字符数组的数组。例如

char  wordArray[7][80];

前提是输入的字符串数量不超过7个。

考虑到第二个循环应该如下所示

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

第一个循环也是无效的,因为虽然循环最后一次迭代的结果等于 EOF,但您尝试复制数组中未输入的字符串 string (因为结果等于到 EOF 则表示没有输入任何内容。因此最后一个有效字符串将被复制两次)

关于c - C 中与数组相关的段错误以及以正确方式打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26030279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com