C 我对fopen和其他软件有错误
我不知道该怎么办,我正试着用10分钟把它修好,但什么也没做。 我是一个初学者。。。所以不要讨厌吸烟。 请帮我输入代码:D 我和C一起工作了一个月,这是一种很酷的语言C 我对fopen和其他软件有错误,c,C,我不知道该怎么办,我正试着用10分钟把它修好,但什么也没做。 我是一个初学者。。。所以不要讨厌吸烟。 请帮我输入代码:D 我和C一起工作了一个月,这是一种很酷的语言 #include <stdio.h> #include <stdlib.h> int main(){ FILE *pf; char input[500]; char ime[500]; int ime2; for(ime2 = 0; ime2 >= 99999
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *pf;
char input[500];
char ime[500];
int ime2;
for(ime2 = 0; ime2 >= 9999999; ime2++);
/*
ime2 is: 1,2,3,4,5,6,7,8,9,10,11,12... 9999999
*/
pf = fopen("bruteforce.txt","w");
if(pf == NULL){
printf("Datoteka (.txt) po imenu: bruteforce nije pronadjena!\n");
} else {
printf("Sledeci text ce biti unesen: \n");
gets(input);
ime = input + ime2; // error
fputs(ime, pf);
printf("Uspesno je ispisano.\n");
fclose(pf);
}
system("pause >nul");
return 0;
}
#包括
#包括
int main(){
文件*pf;
字符输入[500];
字符输入法[500];
INTIME2;
用于(ime2=0;ime2>=999999;ime2++);
/*
ime2是:1,2,3,4,5,6,7,8,9,10,11,12…999999
*/
pf=fopen(“bruteforce.txt”,“w”);
if(pf==NULL){
printf(“Datoteka(.txt)po imenu:bruteforce nije pronajena!\n”);
}否则{
printf(“Sledeci text ce biti unesen:\n”);
获取(输入);
ime=input+ime2;//错误
FPUT(输入法、功率因数);
printf(“Uspesno je ispisano.\n”);
fclose(pf);
}
系统(“暂停>nul”);
返回0;
}
首先改变
gets(input)`
到
然后试试这个
snprintf(ime, sizeof(ime), "%s %d", input, ime2);
顺便说一句:也许MSVC
不会像现在这样喜欢snprintf()
,他们只是添加了这样一个下划线
_snprintf(ime, sizeof(ime), "%s %d", input, ime2);
input
是字符串,ime2
是整数。你不能用整数添加字符串。谁认为你get()
他们不知道fgets()
?input+ime2
生成一个地址,不?@FiddlingBits它正在生成一个数字,你可以随意解释。10分钟。你抱怨在调试上花了10分钟?我不想不必要地拖延您的时间,但这在软件开发中是毫无意义的。不仅get()
是不安全的,\u snprintf()
也是不安全的,因为它不能保证空终止。@cremno不是真的,但您可以检查返回值,并且确保使用get()
无法防止灾难。
_snprintf(ime, sizeof(ime), "%s %d", input, ime2);