我必须学习C langague的基本知识。所以,这意味着我仍然是一个菜鸟。但是,在创建代码后发生了一件奇怪的事情。我的代码的基础是创建一个带有数字的文本文件,然后在另一个文本文件中,反转这些数字。
这是我的代码:
#define _CRT_SECURE_NO_WARNINGS
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX_LIGNE 80
int main()
{
char ligne[MAX_LIGNE] = {0};
FILE* fdFichierentree;
FILE* fdFichiersortie;
int *tableau =0;
int termine = 0;
char * nomFichierEntree = "entreeTexte.txt";
if ((fdFichierentree = fopen(nomFichierEntree, "w")) == NULL)
{
printf("Creation de %s impossible\n", nomFichierEntree);
_getch();
exit(0);
}
char * nomFichierSortie = "sortieTexte.txt";
if ((fdFichiersortie = fopen(nomFichierSortie, "w")) == NULL)
{
printf("lecture de %s impossible\n", nomFichierSortie);
_getch();
exit(0);
}
while (!termine)
{
printf("(E)ntree le ou les nombres ou (Q)uitter\n");
switch (_getch())
{
case 'e':
case 'E':
printf("entrer les nombres :");
fgets(ligne, MAX_LIGNE, stdin);
fprintf(fdFichierentree, "%s", ligne);
break;
case 'q':
case'Q':
termine = 1;
break;
}
}
int nb = 0;
while (fgets(ligne, MAX_LIGNE, fdFichierentree))
++nb;
tableau = (int*)malloc(sizeof(int)*nb);
rewind(fdFichierentree);
nb = 0;
while (fgets(ligne, MAX_LIGNE, fdFichierentree))
{
tableau[nb++] = atoi(ligne);
}
int i;
for (i = nb - 1; i > -1; --i)
fprintf(fdFichiersortie, "%d\n", tableau[i]);
fclose(fdFichierentree);
fclose(fdFichiersortie);
}
奇怪的东西出现在文件texte中。例如,如果我将10和20写为数字,则文件文本将包含两个数字,但也是80-n的奇怪i,其中n是我选择的数字。在我的例子中,我将得到数字10和20以及80 - 2,所以78 i在我的文本文件的其余部分。
以下是截图:
我的代码中有一些部分是法语的,这是正常的,因为我是法国人。对不起。
我希望有人能在我的代码中找到我的错误!
答案 0 :(得分:0)
这一行:
procedure b2 (p_param1 in varchar2) is
v_member_list member_nos_type;
begin
if p_param1 = 'BASKETBALL' then
for rec in (Select membernos
from my_members
WHERE id in (2,4))
loop
v_member_list.extend();
v_member_list(rec):= rec.membernos;
End loop;
end if;
For i in 1..v_member_list.count
loop
dbms_output.put_line(v_member_list(i));
end loop;
end;
仅打开文件进行写入。
因此使用相同的if ((fdFichierentree = fopen(nomFichierEntree, "w")) == NULL)
进行阅读将无效。
建议:
fdFichierentree
所以也可以从文件中读取。