我想連接兩個字符串用於stat函數,但是當我strcat char *然後打印它顯示兩行像這樣。在c中的字符串連接分佈在兩行
./
boot
tmp
./
tmp
lib
./
lib
lost+found
./
lost+found
sbin
./
sbin
etc
我已經嘗試了一些東西,但我可能會談論這一切都是錯誤的。這是我的代碼。
#include <dirent.h>
#include <stdio.h>
#include <errno.h>
#include <sys/stat.h>
#include <string.h>
#include <time.h>
int printDetails(char *path, char *name){
struct stat fileInfo;
char file[100];
strcpy(file, path);
strcat(file, name);
printf("%s\n", file);
return 1;
}
int main(int argc, char *argv[]) {
struct dirent *direntp;
DIR *dirp;
printf("Please Enter directory path\n");
char data[64];
if (fgets(data, sizeof data, stdin)) {
if ((dirp = opendir("/")) == NULL) {
perror ("Failed to open directory");
return 1;
}
while ((direntp = readdir(dirp)) != NULL)
{
printf("%s\n", direntp->d_name);
if(direntp->d_name != "." && direntp->d_name != ".."){
printDetails(data, direntp->d_name);
}
}
while ((closedir(dirp) == -1) && (errno == EINTR)) ;
}
return 0;
}
在這個問題上的任何幫助將是偉大的。
非常感謝
'direntp-> d_name!=「。」 && direntp-> d_name!=「..」'是指針比較,而不是字符串比較。使用'strcmp'來比較指向的數據(即字符串的內容直到空字符)。 –
@barakmanos非常感謝 –