只是想知道,给定以下代码代码片段
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
void do_ls(char []);
main(int ac, char *av[])
{
if ( ac == 1 )
do_ls( "." );
else
while ( --ac ){
printf("%s:\n", *++av );
do_ls( *av );
}
}
void do_ls( char dirname[] )
{
DIR *dir_ptr; /* the directory */
struct dirent *direntp; /* each entry */
if ( ( dir_ptr = opendir( dirname ) ) == NULL )
fprintf(stderr,"ls1: cannot open %s\n", dirname);
else
{
while ( ( direntp = readdir( dir_ptr ) ) != NULL )
printf("%s\n", direntp->d_name[0] );
closedir(dir_ptr);
}
}
如何获取每个条目的特定字符(例如名称中的第一个字符)而不是整个名称,而不是获取每个条目的全名。在代码中我尝试使用 direntp->d_name[0]
但它没有用。
如有任何帮助/提示,我们将不胜感激。
最佳答案
将 printf
中的 %s
更改为 %c
,这将打印一个字符。
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
void do_ls(char []);
int main(int ac, char *av[])
{
if ( ac == 1 )
do_ls( "." );
else {
while ( --ac ) {
printf("%s:\n", *++av );
do_ls( *av );
}
}
return 0;
}
void do_ls( char dirname[] )
{
DIR *dir_ptr; /* the directory */
struct dirent *direntp; /* each entry */
if ( ( dir_ptr = opendir( dirname ) ) == NULL )
fprintf(stderr,"ls1: cannot open %s\n", dirname);
else
{
while ( ( direntp = readdir( dir_ptr ) ) != NULL )
printf("%c\n", direntp->d_name[0] );
closedir(dir_ptr);
}
}
关于C: 获取 d_name 的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43305417/