#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
FILE *ptr;
ptr=fopen("D:\\test.txt","w+");
char a[5];
char i='a',j='a',k='a',l='a';
a[0]='l';
a[1]='a';
for(i='a';i<=121;i++)
{
a[2]=i;
for(j='a';j<=121;j++)
{
a[3]=j;
switch(j)
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
for(k='a';k<=121;k++)
{
a[4]=k;
for(l='a';l<=117;l++)
{
switch(l)
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':{a[5]=l;fprintf(ptr,"%s",a);}
}
}
}
}
fclose(ptr);
return 0;
}
这是完美运行的程序
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
main()
{
char a[50],b[50];
printf("Enter a name\n");
gets(b);
FILE *ptr;
ptr=fopen("D:\\test.txt","w+");
fprintf(ptr,"%s",b);
rewind(ptr);
fscanf(ptr,"%s",&a);
printf("%s",a);
fclose(ptr);
}
最佳答案
我整理了你的代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
FILE *ptr = NULL;
char a[7];
/* Attempt to open the output file, and exit if something goes wrong. */
ptr = fopen("D:\\test.txt", "w+");
if (!ptr) { return 1; }
/* End the string with a NUL-terminator byte. */
a[0] = 'l';
a[1] = 'a';
a[6] = 0;
for (a[2] = 'a'; a[2] <= 121; a[2]++) {
for (a[3] = 'a'; a[3] <= 121; a[3]++) {
switch (a[3]) {
case 'a': case 'e': case 'i': case 'o': case 'u':
for (a[4] = 'a'; a[4] <= 121; a[4]++) {
for (a[5] = 'a'; a[5] <= 117; a[5]++) {
switch (a[5]) {
case 'a': case 'e': case 'i': case 'o': case 'u':
fprintf(ptr, "%s\n", a);
break;
}
}
}
break;
}
}
}
fclose(ptr);
return 0;
}
我认为问题在于字符串 a
不包含零终止符字节,因此我添加了一个。您还应该确保在尝试写入文件之前已成功打开该文件,因此我也添加了这一点。代码中相关部分已进行注释。
我已经验证这一切都适用于 this .
关于c - fprintf 语句在代码块中未正确执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24429344/