gpt4 book ai didi

C - 获取数字而不是字符串

转载 作者:太空宇宙 更新时间:2023-11-04 06:25:26 25 4
gpt4 key购买 nike

我正在使用 dirent.h 查看 var/log 中的所有文件,我想将它们保存在一个数组中,但是当我保存它们时,它看起来像数字而不是字符串。为什么会这样?

代码在这里:

  char *word = ".gz" ; 
char *word2 = ".";
char *word3 = "..";
DIR *directory;
struct dirent *dir;

directory = opendir("/var/log");
if (directory) {
while ((dir = readdir(directory)) != NULL)
{
if((strstr(dir->d_name, word) == NULL) && (strstr(dir->d_name, word2) == NULL) && (strstr(dir->d_name, word3) == NULL)) {
printf("%s\n", dir->d_name);
i++;
}
}
printf("%d\n",i);

closedir(directory);
}
char *array_of_files[i];
i=0;
directory = opendir("/var/log");
if (directory) {
while ((dir = readdir(directory)) != NULL)
{
if((strstr(dir->d_name, word) == NULL) && (strstr(dir->d_name, word2) == NULL) && (strstr(dir->d_name, word3) == NULL)) {
array_of_files[i]=dir->d_name;
printf("%d array of file \n",array_of_files[i]);
i++;
}
}
printf("%d\n",i);
int j;
for (j=0;j<i;j++){

printf("%d ", array_of_files[j]);
}
closedir(directory);

首先我使用一个计数器来计算文件夹中的文件数量,然后我重新打开目录并使用该计数器创建数组,并开始保存文件夹中文件的名称,但它只显示数字.

一个这样的例子:

./program

speech-dispatcher
dbconfig-common
apache2
mdm
fsck
samba
aptitude
dmesg
unattended-upgrades
postgresql
udev
installer
cups
hp
btmp
ConsoleKit
syslog
wtmp
mysql
lastlog
23
8962131 8962163 8962283 8962315 8962675 8962755 8962947 8963091 8963155 8963331 8963403 8963539 8963579 8963691 8963755 8964251 8964307 8964435 8964507 8964539 8964571 8964627 8964723

我知道有更好的方法来处理数组而不是两个 while 循环,但我现在想不出更好的方法;如果您能推荐一些东西,我们将不胜感激。

最佳答案

更改以下行

printf("%d array of file \n",array_of_files[i]); to 
printf("%s array of file \n",array_of_files[i]);`

printf("%d ", array_of_files[j]); to 
printf("%s ", array_of_files[j]);

关于C - 获取数字而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27661645/

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