gpt4 book ai didi

c - Strdup 将每一行放入数组中?

转载 作者:行者123 更新时间:2023-11-30 17:42:58 27 4
gpt4 key购买 nike

我必须分配一个包含 1000 个字符串指针的数组,从 stdin 中读取每个字符串,并将每一行的 strdup 读入数组中。我做了以下事情:

char *array[1000];
int index = 0;
for (int i = 0; i < 1000; i++) {
scanf("%s", &array[i]);
strdup(array[i]);
}

我不确定这是否是正确的方法?

编辑:

因此,我需要在每行末尾插入空字符换行符,并且需要使用 strlen 函数来完成此操作。我有以下内容:

  // Plug the newline where the end of 
// a line is equal to '0/'
index = strlen(array) - 1; // line 30
if (array[index] = '\n') { // line 31
array[index] = '\0';
}

但我收到以下错误:

linesort.c: In function ‘main’:
linesort.c:30: warning: passing argument 1 of ‘strlen’ from incompatible pointer type
/usr/include/string.h:399: note: expected ‘const char *’ but argument is of type ‘char **’
linesort.c:31: warning: assignment makes pointer from integer without a cast
linesort.c:31: warning: suggest parentheses around assignment used as truth value

请多多指教!

最佳答案

您需要一个中间数组。您不能仅将数据存储到未初始化的内存中 scanf("%s", &array[i]);

char *array[1000];
char buf[50] ;
char buf2[50] ;

for (int i = 0; i < 1000; i++) {
scanf("%49s", buf);
snprintf( buf2 , sizeof( buf ) , "%s\n" , buf ) ;
array[i] = strdup( buf2 );
}
return 0 ;
}

关于c - Strdup 将每一行放入数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20341400/

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