我正在编写一个程序,该程序将从每个候选人的用户名和答案中获取输入,并按如下所示将它们打印在.csv文件中:
name,answer A,answer B,...,answer Z.
每个名称都存储在名为nome_cognome
的矩阵中;
每个答案都存储在名为matrice_risposte
的矩阵中;
出于某种原因,我忽略了该程序,仅对第一个候选者的最后一个(“ Z”问题)打印错误答案。其他任何候选人都正确报告了所有答案。
我试图做的事情: 我在不了解问题背后原因的情况下调试了5天的程序。我在网上搜索了类似的问题,我试图修改代码,但无法解决。 如果找不到任何解决方案,我通常会在论坛上写下最后的机会。
我让用户检查插入的答案是否正确,然后再继续下一个答案。在屏幕上打印答案时,将正确报告它们。在文件上打印时,会按照说明进行操作。
我为Paul输入的所有答案均为1,而对于marie,我输入的所有答案均为2。
代码显示了程序在csv文件(已创建)上写入的部分。
FILE *file_risultati; //apertura file di testo
strcat(corso,".csv");
file_risultati=fopen(corso,"w");
for (j=0;j<iscritti;j++){
p=0;
while(nome_cognome[j][p]!='\n')
{
fprintf(file_risultati,"%c",nome_cognome[j][p]);
p=p+1;
}
fprintf(file_risultati,",");
for(i=0; i<22; i++)
{
fprintf(file_risultati,"%d,matrice_risposte[j][i]);
}
if(j != (iscritti-1)){
fprintf(file_risultati,"\n");
}
}
fclose(file_risultati); //chiusura file di testo
以下代码是完整的程序,因此您可以检查所有内容并验证我的意思。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char corso[100];
char acquisizione_nome [40];
char domande[]= "ABCDEFGHIJLMNOPQRSTUVZ";
int iscritti;
int risposta;
int i;
int j;
int k=1;
int p;
// variabili variazione risposta
int modifica_risposta = 1;
int risposta_precedente;
char risposta_modificata;
char domande_min[]="abcdefghijlmnopqrstuvz";
int main()
{
printf("Program written by Gianluca Gregnol\n\n");
printf("Raccolta del fabbisogno formativo\n\n");
printf("Digitare il corso di interesse: ");
gets(corso);
printf("Digitare numero di iscritti al corso: ");
scanf("%d",&iscritti);
char nome_cognome[iscritti][40];
int matrice_risposte[iscritti][21];
// processo di inserimento votazioni //
for (k=0;k <(iscritti);k++)
{
printf("\n iscritto ");
printf("%d \n\n",k+1);
printf("nome e cognome: ");
fflush(stdin);
fgets(acquisizione_nome,40,stdin);
for (i=0; i<40; i++)
{
nome_cognome[k][i]= acquisizione_nome[i];
}
for (i=0; i<22; i++)
{
printf("\nvoto della domanda ");
printf("%c: ",domande[i]);
scanf("%d",&risposta);
while (risposta<0 || risposta>3)
{
printf("\n VOTO NON VALIDO!\n i voti validi sono: 0,1,2,3\n inserire nuovamente il voto per la domanda ");
printf("%c:",domande[i]);
fflush(stdin);
scanf("%d",&risposta);
}
matrice_risposte[k][i]=risposta;
}
//stampa le risposte attuali per permetterne il controllo
printf("\nLe risposte attualmente inserite sono: \n");
for (i=0; i<22; i++)
{
printf("%c ",domande[i]);
}
printf("\n");
for (i=0; i<22; i++)
{
printf("%d ",matrice_risposte[k][i]);
}
printf("\nDesideri modificare delle risposte? \n No = 0 \n Si = 1 \n");
printf("Risposta: ");
fflush(stdin);
scanf("%d",&modifica_risposta);
// controlla se l'utente vuole cambiare delle risposte
while(modifica_risposta == 1){
printf("\n\nQuale risposta vuoi modificare?\n");
printf("Risposta: ");
fflush(stdin);
scanf("%c",&risposta_modificata);
for(i=0; i<22; i++){
if(risposta_modificata == domande_min[i] || risposta_modificata == domande[i]){
printf("\nIndica il nuovo valore della domanda %c: ",&risposta);
while (risposta < 0 || risposta > 3)
{
printf("\n VOTO NON VALIDO!\n i voti validi sono: 0,3\n inserire nuovamente il voto per la domanda ");
printf("%c:",domande[i]);
fflush(stdin);
scanf("%d",&risposta);
}
risposta_precedente = matrice_risposte[k][i] ;
matrice_risposte[k][i] = risposta;
printf(" -- Risposta modificata correttamente --\n\n");
}
}
printf("\nDesideri modificare delle risposte? \n No = 0 \n Si = 1 \n");
printf("Risposta: ");
fflush(stdin);
scanf("%d",&modifica_risposta);
} //main while
}
// processo scrittura su file
FILE *file_risultati; //apertura file di testo
strcat(corso,".csv");
file_risultati=fopen(corso,"w");
for (j=0;j<iscritti;j++){
p=0;
while(nome_cognome[j][p]!='\n')
{
fprintf(file_risultati,nome_cognome[j][p]);
p=p+1;
}
fprintf(file_risultati,");
for(i=0; i<22; i++)
{
fprintf(file_risultati,matrice_risposte[j][i]);
}
if(j != (iscritti-1)){
fprintf(file_risultati,"\n");
}
}
fclose(file_risultati); //chiusura file di testo
return 0;
}