boxさま
もともとはこのプログラムを書いたのですが、さすがに全部書くのは醜いと思い簡単にしました。結果
誤解が生まれてしまったのですみませんでした。
最初は\ひとつでやっていたのですが、反応しなかったのでprintf()でみたところ\が消えていました。なので、もうひとつ付け足したら成功したので、二つじゃないと反応しないことに気づきました。しかし、問題が起こりました。僕はSystemParametersInfoで使おうとしていたのですが、””で\\を二つつけてフルパスを直接指定すると、できるのですが、変数からだとしていできませんでした。
コード:
#include <stdio.h>
#include <string.h>
#include <direct.h>
#include <DxLib.h>
char str[256];
char *FindFile(char *fpath){
WIN32_FIND_DATA fp;
HANDLE hFind;
char zpath[256];
char copyp[256];
int i=0;
strcpy(copyp,fpath);
hFind=FindFirstFile(fpath,&fp);
FindNextFile(hFind,&fp);
FindNextFile(hFind,&fp);
i=strlen(copyp);
copyp[(i-3)]='\0';
do{
if((fp.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
&& strcmp(fp.cFileName,"..")!=0 && strcmp(fp.cFileName,".")!=0){
printf("\n失敗したよ(´・ω・`)");
break;
}else{
printf("\n成功したよ(´・ω・`)");
printf("\n%s",fp.cFileName);
wsprintf(zpath,"\n%s%s",copyp,fp.cFileName);
printf("%s\n",zpath);
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,zpath,SPIF_UPDATEINIFILE|SPIF_SENDWININICHANGE);
}}while(FindNextFile(hFind,&fp));
FindClose(hFind);
return fpath;
}
char *fpath(char *user,char *yf){
char path[]="C:\\Users\\";
char apath[]="\\Pictures\\";
char lpath[]="\\*.*";
sprintf(str,"%s%s%s%s%s",path,user,apath,yf,lpath);
printf("%s",str);
return str;
}
int main(){
char user[25];
char yf[25];
char *full;
printf("ユーザー名入力:");
scanf("%s",&user);
printf("\nフォルダ名入力:");
scanf("%s",&yf);
full = fpath(user,yf);
FindFile(full);
return 0;
}