私は学校のプロジェクトで、chars *やその他の変数を使ってリンクリストを使用する必要があります。問題は次のとおりです。main()と関数(リスト)の間で値を渡せません
サブ関数を使用してリスト内のデータを開いて読み込み、格納していますが、文字列にアクセスできません。他の情報が表示されています。 ..
void main()
{
Palavra* P = lerPalavras();
printf ("%s", P->c); //Was just testing in this ...
}
サブ目的球
Palavra* lerPalavras() //Just ignore what is going on here in the code, the problem is when I call it, within the function the output works just fine, but when I pass to main it's just not working at all. Thanks
{
char linha [50];
Palavra* P = NULL;
Palavra* pv = NULL;
FILE* ficheiro = fopen ("keywords.txt", "r");
if(ficheiro == NULL)
{
printf ("Abertura do Ficheiro 'keywords.txt' Falhou!");
return NULL;
}
while (fgets (linha, sizeof (linha),
{
if (linha [strlen(linha) - 1] != '\n')
linha [strlen(linha)] = '\0';
else
linha [strlen(linha) - 1] = '\0';
pv = CriaKW();
pv->c = linha;
pv->tam = strlen (linha);
P = insertKW (P, pv);
}
fclose (ficheiro);
return (P);
}
構造体 "Mensagem"
typedef struct KW
{
char* c;
struct KW* nseg;
int ID;
long int tam;
} Palavra;
機能 "CriaKW"
Palavra* CriaKW()
{
Palavra * pv = (Palavra*) malloc (sizeof (Palavra));
return (pv);
}
機能「insertKW」
Palavra* insertKW (Palavra* P, Palavra* pv)
{
pv->nseg = NULL;
if (P == NULL) //Ver se a Lista está vazia
return (pv);
Palavra* p = P; //Variável Auxiliar para não perder a cabeça da Lista
while (p->nseg != NULL) //Ver se a "caixa" tem seguinte
p = p->nseg; //Correr a Lista
p->nseg = pv;
return (P);
}
字下げと書式設定を修正してください。すべてのコード行の前に4つのスペースを入れてください。 –
ありがとうございました@ppz、 –
[分岐とループに常に中括弧を使用する]ことをお勧めします(https://stackoverflow.com/questions/2125066/is-it-bad-practice-to -use-an-if-statement-bracketsなし)。 – Galen