Hilfe beim C Programm :)

P

Paper

Guten Morgen an alle :) ich muss euch mal belässtigen :D ich bin einfach nicht für's Programmieren geschaffen deshalb brauch ich eure Hilfe.

Die Aufgabe ist es das die Software eine Logdatei einliesst, den Unix Timestamp in ein Datum und eine Uhrzeit umwandelt und das Datum in eine neue Datei schreibt. Soweit klappt es auch nur er anstelle des Datums in der neuen textdatei anstelle des Datums eine (NULL) einträgt. Ich habe 100mal geschaut aber ich finde den Fehler einfach nicht ich bin hier richtig am verzweifeln.



Ich habe folgenden Code:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>



int main()


{
   int unixModus = 0;
   int lnr = 0,mtime=0;
   int ijahr=0,imonat=0,itag=0,istd=0,imin=0,isek=0;  
   
    //Auswahl
    printf("Bitte waehlen:\n\n<1> Datum --> Unix\n\n<2> Unix --> Datum\n\n<3> Log auslesen\n\n");
    scanf("%d",&unixModus);


    
    
switch(unixModus)
{
   case 1:
        //Abfrage des Datums und der Uhrzeit
        printf("\n\n\nBitte geben Sie das Datum [dd.mm.yyyy] ein:::\n");
        scanf("%d.%d.%d",&itag,&imonat,&ijahr);   
  
        printf("Bitte geben Sie die Uhrzeit [hh:mm:ss] ein:::\n");
        scanf("%d:%d:%d",&istd,&imin,&isek);
        
        printf("\n\n\nBitte waehlen: <1> UTC/GMT  ||  <2> LocalTime:::\n");
        scanf("%d",&mtime);
        //Ausgabe der Unixzeit ---> Aufruf der Funktion date2Unix()
        if (mtime==2)
        printf("UniXZeit::: %d [LocalTimezone]\n\n",date2Unix(ijahr,imonat ,itag,istd,imin,isek,mtime));
        else if(mtime==1)
        printf("UniXZeit::: %d [UTC/GMT]\n\n",date2Unix(ijahr,imonat ,itag,istd,imin,isek,mtime));
        else
        errorSend();
        break;

   case 2:
        
        //Abfrage des Timestamps
       printf("\n\n\nBitte geben Sie den Unix Timestamp ein:::\n");
       scanf("%d",&lnr);
       
       printf("\n\n\nBitte waehlen: <1> UTC/GMT  ||  <2> LocalTime:::\n");
       scanf("%d",&mtime);
       //Ausgabe des Datums ---> Aufruf der Funktion Unix2Date()
       printf("\n\nUniXZeit::: %d\n\n--> Datum: %s\n\n\n",lnr,Unix2Date(lnr,mtime));
       break;

   case 3:
       //Aufruf der Funktion zur Verarbeitung der .log-Dateien
       logConvert();
       
       
       
       

      
       break;

   default:
       //Default-Ausgabe wenn die Auswahl falsch war    
       printf("\n:::::::::::::::::::::::::::::::::::::::::::::\n");   
       printf("\n\n\nFalsche Eingabe ::: Bitte Neustarten!\n\n");
      
} 

  
system("PAUSE");	
return 0;    
}











//---------------UNIX2DATE--------------------

int Unix2Date(int unixzeit,int modusTime)
{
  //Variabeln für die einzelnen Datumsteile 
  int ijahr=0,imonat=0,itag=0,istd=0,imin=0,isek=0;
  char timezone[30];
  
  
  char stringVar[20];
  int sommerZeit=0;
  
  //Endwert der UnixZeit 19.01.2038 um 4:14:07
  int unixMax = 2147483647;
  
  //Überprüfung,ob die eingegebene Unixzeit gültig ist
  if (unixzeit>>unixMax)
  {
                          
     errorSend(); 
   
  }
  
  //time_t ist ein Zeitstempel ... in Sek ab 1970
  //wie UnixZeit
  time_t unixStamp = unixzeit;
  
  //Struktur für time_t
  struct tm * unixConvert;
  
  //String zum Speichern des Datums
  char cbuffer[80];
  
  //Struktur bekommt den Zeitstempel
   
  if(modusTime==2)
  unixConvert = localtime(&unixStamp);
  else if (modusTime==1)
  unixConvert = gmtime(&unixStamp);
  
  //Speichern der einzelnen Datumsteile in Variabeln
  strftime( stringVar, 20, "%d", unixConvert ); //Tag
  itag = atoi(stringVar);
  strftime( stringVar, 20, "%m", unixConvert ); //Monat
  imonat = atoi(stringVar);
  strftime( stringVar, 20, "%Y", unixConvert ); //Jahr
  ijahr = atoi(stringVar);
  strftime( stringVar, 20, "%H", unixConvert ); //Stunde
  istd = atoi(stringVar);
  strftime( stringVar, 20, "%M", unixConvert ); //Minute
  imin = atoi(stringVar);
  strftime( stringVar, 20, "%S", unixConvert ); //Sekunde
  isek = atoi(stringVar);
  
  
  //Zeitzone
  strftime( timezone, 30, "%z", unixConvert );
  
 
//Ausgabestring  
char str1[50]; 

//Zwischenspeicher
char buffer[20];
 
 
  //Umwandlung und Zusammenfassung in einen Return-String
 strcpy (str1,itoa(itag,buffer,10));
 strcat (str1,".");
 strcat (str1,itoa(imonat,buffer,10));
 strcat (str1,".");
 strcat (str1,itoa(ijahr,buffer,10));
 strcat (str1," um ");
 strcat (str1,itoa((istd),buffer,10));
 strcat (str1,":");
 strcat (str1,itoa(imin,buffer,10));
 strcat (str1,":");
 strcat (str1,itoa(isek,buffer,10));
 if (modusTime==2)
 {
 strcat (str1,"  ");
 strcat (str1,timezone);
}
else
{
 strcat (str1,"  ");
 strcat (str1,"UTC/GMT");    
}
 //Rückgabe des Datums
 printf (str1);
 return 0; 
}























//--------------------LOGCONVERT--------------------




int logConvert()
{

//Zwischenspeicher fürs Einlesen   
char puffer[256];
int line= sizeof(puffer);

//Trennzeichen
char del[]="\n";

//Zählvariabeln
int i =0;

  //Festlegen des Pfades für die Input-Datei
  FILE *fileOutput;
	   fileOutput = fopen( "squidNeu.log", "w");



  //Überprüfung, ob Datei vorhanden ist  
  if(NULL == fileOutput) {
      fprintf(stderr, "Fehler beim Oeffnen ...\n");
      return EXIT_FAILURE;
   }

   //Festlegen des Pfades für die Output-Datei	   
  FILE *fileInput;
	   fileInput = fopen( "squid123.log", "r");
  
  //Überprüfung, ob Datei vorhanden ist 	   
  if(NULL == fileInput) {
      fprintf(stderr, "Fehler beim Oeffnen ...\n");
      return EXIT_FAILURE;
   } 
  

//Ergebnisvariable
int unixzeit2[1000];    

//Zählvariable
int counter=0;

//Pointer für die Stringteilung
char *wordptr;

   //solange Zeilen vorhanden sind wird eingelesen
   while(fgets (puffer, line, fileInput))
   {
   
        //erste Zeile wird eingelesen
       wordptr = strtok(puffer,del);
                      
                         
                       
        //Überprüfung, ob man am Ende des Strings ist          
        while(wordptr == NULL);
        {
                     
                     
                     
                     
                     
                     //printf("WORDPTR: %s\n",wordptr);
                     sscanf(wordptr, "%d",&unixzeit2[counter]);
                     //printf("UNIX: %d\n",unixzeit2[counter]);
                     counter++;

                     //Sprung zum nächsten Satzteil
                     //Stelle durch NULL markiert
                     wordptr = strtok(NULL,del);
                       
        }
   }
 


int a=0;
//Ausgabe des ErgebnisArrays in die Output-Datei
for(;a<counter;a++)
{                  
                   
//printf("Unix: %d  --> Datum: %s\n",unixzeit2[a],Unix2Date(unixzeit2[a]));                              
fprintf(fileOutput,"Unix: %d --> Datum: %s \n",unixzeit2[a],Unix2Date(unixzeit2[a],2));

}

//Schließen der Dateien
fclose(fileInput);
fclose(fileOutput);

       
}


int date2Unix(int ijahr,int imonat ,int itag,int istd,int imin,int isek,int modusTime)
{



//Zeitzone [GMT+1]
int timeZoneBonus = 1;
int sommerZeit=0;

//Ergebnisdatei
int unixzeit3;

int y=0;

//Array zum speichern der Eingaben
char datum[11];
char uhrzeit[9];


int convert [10];

//Zeiger für die "Zerlegung" des Datum-/Uhrzeit-Strings
char *dateptr;
char *dateptr2;

//Tage im Jahr bei Monatsanfang // ohne Schaltjahr
int daysUntilMonth[12] = {0,31,59,90,120,151,181,212,243,273,304,334};

//Wie viele Tage hat der Monat //ohne Schaltjahr
int monthEnd[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};


//Ende Februar 28 oder 29 
if (ijahr %4 == 0 && (ijahr %100 != 0 || ijahr %400 ==0))
{
   //Addition des Schalttages       
   monthEnd[2] = monthEnd[2] + 1;
}

//Überprüfung der Eingabe, ob Datum gültig
if(ijahr>=1970 && ijahr<=2038)
{
    if (imonat>=1 && imonat<=12)
    {
                  
                  if(itag >=1 && itag <= monthEnd[imonat])
                  {

                          if(istd>=0 && istd<=23)
                          {
                                     if(imin>=0 && imin<=59)
                                     {
                                                
                                                if(isek>=0 && isek<=59)
                                                {

//Startjahr der Unixzeit  
int curJahr=1970;
int schaltTage = 0;

//Schleife die für jedes Schltjahr einen "Schalttag" hinzu rechnet 
//von 1970 bis zum angegebenen

for(;curJahr<=ijahr-1;curJahr++)
{
                                
  //Jahr ist ein Schaltjahr, wenn
  // Jahreszahl durch 4 teilbar ist und entweder nicht durch 100 teilbar ist
  // oder durch 400
  
  if(curJahr%4== 0 && (curJahr%100!=0 || curJahr%400==0))
  
  {
  schaltTage=schaltTage + 1;          
  
 }
  
}

//Abfangen der Sommerzeit
if (imonat>=3 && itag>=27 && istd >=2 && imonat <=10 && itag<=30 && istd<=3)
sommerZeit = 1;
else
sommerZeit = 0;


//Jahre seit Unix

if ( (imonat>2) && (ijahr%4==0 && (ijahr%100!=0 || ijahr%400==0)) )
{
 unixzeit3 = unixzeit3 + 3600*24;
}
  
  ijahr= ijahr-1970;

//berechnung der Unixzeit
if (modusTime==1)
{ 
unixzeit3=isek + 60*imin + 3600*(istd )
               +(daysUntilMonth[imonat-1]+itag-1)*3600*24
               +(ijahr*365+schaltTage)*3600*24;
} 
else if (modusTime==2) 
{
unixzeit3=isek + 60*imin + 3600*(istd- sommerZeit - timeZoneBonus)
               +(daysUntilMonth[imonat-1]+itag-1)*3600*24
               +(ijahr*365+schaltTage)*3600*24;
    
}

//Ausgabe
    
                  
}
else
errorSend();    
}
else
errorSend();    //Fehlerausgabe bei falschem Datum
}
else
errorSend();    //oder Uhrzeit
}
else
errorSend();
}
else
errorSend();
}
else
errorSend();


//Berechnete Unixzeit gültig****?
if(unixzeit3<=2147483647 && unixzeit3>=0)
{
return unixzeit3;  //Rückgabe der Unixzeit
}
else
errorSend();       //sonst Fehler


}


//Fehlermeldung 
int errorSend()
{
 printf("\n:::::::::::::::::::::::::::::::::::::::::::::\n");     
 printf("\n\n\nFalsche Eingabe ::: Bitte Neustarten!\n\n");
 printf("Unix Timestamp began am 01.01.1970 um 00:00:00 [UTC/GMT]\n\n\n"); 
 printf("           und endet am 19.01.2038 um 03:14:07 [UTC/GMT]\n\n\n"); 
 
system("Pause");
     
}

also der Teil den ich meine beginnt ab "//--------------------LOGCONVERT--------------------" Zeile 204

Die neue Text datei die er ausgibt sieht dann so aus

Unix: 1310139853 --> Datum: (null)
Unix: 1310139853 --> Datum: (null)
Unix: 1310139853 --> Datum: (null)
Unix: 1310139853 --> Datum: (null)
Unix: 1310139853 --> Datum: (null)
Unix: 1310139853 --> Datum: (null)
Unix: 1310139853 --> Datum: (null)
Unix: 1310139855 --> Datum: (null)

ich hoffe ihr könnt mir helfen.

Grüße Paper
 
Zuletzt bearbeitet von einem Moderator:
Hi.

C:
fprintf(fileOutput,"Unix: %d --> Datum: %s \n", unixzeit2[a], Unix2Date(unixzeit2[a],2));
die Funktion Unix2Date hat folgenden Prototyp:
C:
int Unix2Date(int, int)
sie gibt also einen int zurück...

In Funktion Unix2Date, Zeile 88:
C:
    printf (str1); // schreibt das Datum auf die Kommandozeile
  return 0; // gibt immer 0 zurück
Hä? :confused:

Sorry, aber hast du wirklich erwartet, das das funktioniert?

Gruß

\edit: WTF?
C:
  strftime( stringVar, 20, "%d", unixConvert ); //Tag
  itag = atoi(stringVar);

...

strcpy (str1,itoa(itag,buffer,10));
Du extrahierst also aus dem Datum den Tag als String, konvertierst ihn in einen int, um ihn dann wieder in einen String zu konvertieren... und das für alle Datumswerte um sie in einen Gesamtstring zu schreiben? Dir ist schon klar, das du einfach nur die strftime Funktion dafür benutzen mußt?
 
Zuletzt bearbeitet:
Den Code habe ich so übernommen, ich soll damit weiterarbeiten und halt den LogConvert machen.
Den jenigen der das alles geschrieben hat, den seh ich nie mehr wieder weil der nur kurz hier war. Jetzt wo er weg ist soll ich das mit seinem Code machen. Verstehen tu ich manche sachen auch nicht aber wenn ich's verändere läuft garnichtsmehr :D. Ich versuchs hier so gut wie es geht :D. Meine ganzen versuche da i.was zu ändern sind gescheitert weil es dann garnichtmehr funktioniert hat:D.



In Funktion Unix2Date, Zeile 88:
C:
    printf (str1); // schreibt das Datum auf die Kommandozeile
  return 0; // gibt immer 0 zurück
Hä? :confused:

Da weiß ich nicht was genau falsch ist. Ich habe daran gedacht dieses str1 zu ändern aber dann stürzt das Programm ab.


WTF?
C:
  strftime( stringVar, 20, "%d", unixConvert ); //Tag
  itag = atoi(stringVar);
 
...
 
strcpy (str1,itoa(itag,buffer,10));

Ist das hier jetzt falsch oder einfach nur umständlich geschrieben? :)

Das was ich daran erfolgreich geändert habe ist einfach nur das hier

C:
//Festlegen des Pfades für die Output-Datei     
  FILE *fileInput;
       fileInput = fopen( "squid123.log", "r");

weil da vorher auch ein w stand. Aber Ok das zu verändern ist kein akt :D

aah ich bin blöd xD das kommt davon wenn man noch keinen Cafee getrunken hat xD

hier bei dem Teil

printf (str1); // schreibt das Datum auf die Kommandozeile
return 0; // gibt immer 0 zurück

einfach bei return auch dieses str1 rein kloppen dann gehts :)

aber hättest du mich nicht drauf aufmerksam gemacht wäre es mir nicht aufgefallen vielen dank :)
 
Zuletzt bearbeitet von einem Moderator:
Paper hat gesagt.:
aah ich bin blöd xD das kommt davon wenn man noch keinen Cafee getrunken hat xD

hier bei dem Teil

printf (str1); // schreibt das Datum auf die Kommandozeile
return 0; // gibt immer 0 zurück

einfach bei return auch dieses str1 rein kloppen dann gehts :)
Ist aber noch lange nicht richtig.

Du solltest unbedingt die Warnungen deines Compilers einschalten.

1. die Funktion hat Rückgabetyp int, du gibst einen char* zurück
2. du gibst einen Zeiger auf lokalen Speicher zurück, das führt zu Abstürzen
3. du benutzt Funktionen die (noch) gar nicht deklariert sind, Funktionen sollten / müssen zuerst deklariert werden

Übrigens kann man seine Beiträge auch bearbeiten, es Doppel oder Tripelposts verstoßen gegen die Netiquette...

Ist das hier jetzt falsch oder einfach nur umständlich geschrieben?
umständlich ist gar kein Ausdruck...
dann kommen wir zum 2. Problem in der kommandozeile steht einfach alles nebeneinander
ich schaff es nicht das auch untereinaner zu schreiben. I,wie klappt das nicht
Das Problem kann ich nicht nachvollziehen. Kopiere die Ausgabe hier in Code-Tags.

Bitte achte auf die Groß/Kleinschreibung usw. Siehe Netiquette. Danke.

Gruß
 
Entschuldigung das mit den Doppelpostings etc. passiert nichtmehr :)
Da ist wohl einfach die Vorfreude mit mir durch gegangen.

Das Problem kann ich nicht nachvollziehen. Kopiere die Ausgabe hier in Code-Tags.


Also so sieht es in der Kommandozeile aus...

Code:
8.7.2011 um 17:44:13  Mitteleuropõische Sommerzeit8.7.2011 um 17:44:13  Mitteleu
ropõische Sommerzeit8.7.2011 um 17:44:13  Mitteleuropõische Sommerzeit8.7.2011 u
m 17:44:13  Mitteleuropõische Sommerzeit8.7.2011 um 17:44:13  Mitteleuropõische
Sommerzeit8.7.2011 um 17:44:13  Mitteleuropõische Sommerzeit8.7.2011 um 17:44:13
  Mitteleuropõische Sommerzeit8.7.2011 um 17:44:15  Mitteleuropõische Sommerzeit
8.7.2011 um 17:44:15  Mitteleuropõische Sommerzeit8.7.2011 um 17:44:15  Mitteleu
ropõische Sommerzeit8.7.2011 um 17:44:15  Mitteleuropõische Sommerzeit8.7.2011 u
m 17:44:15  Mitteleuropõische Sommerzeit8.7.2011 um 17:44:15  Mitteleuropõische
Sommerzeit8.7.2011 um 17:44:15  Mitteleuropõische Sommerzeit8.7.2011 um 17:44:15
  Mitteleuropõische Sommerzeit8.7.2011 um 17:44:15  Mitteleuropõische Sommerzeit
8.7.2011 um 17:44:15  Mitteleuropõische Sommerzeit8.7.2011 um 17:44:16  Mitteleu
ropõische Sommerzeit4.1.2002 um 0:36:50  Mitteleuropõische Zeit8.7.2011 um 17:44
:16  Mitteleuropõische Sommerzeit8.7.2011 um 17:44:16  Mitteleuropõische Sommerz
eit8.7.2011 um 17:44:16  Mitteleuropõische Sommerzeit29.1.2002 um 15:44:25  Mitt
eleuropõische Zeit8.7.2011 um 17:44:16  Mitteleuropõische Sommerzeit8.7.2011 um
17:44:35  Mitteleuropõische Sommerzeit8.7.2011 um 17:44:35  Mitteleuropõische So
mmerzeit8.7.2011 um 17:44:35  Mitteleuropõische Sommerzeit8.8.2005 um 1:18:32  M
itteleuropõische Sommerzeit8.7.2011 um 17:44:35  Mitteleuropõische Sommerzeit8.7
.2011 um 17:44:35  Mitteleuropõische Sommerzeit8.7.2011 um 17:44:35  Mitteleurop
õische Sommerzeit8.7.2011 um 17:44:35  Mitteleuropõische Sommerzeit8.7.2011 um 1
7:44:35  Mitteleuropõische Sommerzeit30.9.1970 um 14:24:46  Mitteleuropõische So
mmerzeit

und ich würde es gerne untereinander haben.

8.7.2011 um 17:44:13 Mitteleuropõische Sommerzeit
8.7.2011 um 17:44:13 Mitteleuropõische Sommerzeit
8.7.2011 um 17:44:13 Mitteleuropõische Sommerzeit .... so meine ich das :)





1. die Funktion hat Rückgabetyp int, du gibst einen char* zurück
2. du gibst einen Zeiger auf lokalen Speicher zurück, das führt zu Abstürzen
3. du benutzt Funktionen die (noch) gar nicht deklariert sind, Funktionen sollten / müssen zuerst deklariert werden




Zu 1. Also ist das die böse Variante?

Zu 2. Hmm ich habe geschaut aber finde keine möglichkeit das anders zu lösen

Zu 3. Ich dachte die sind schon deklariert :confused:
 
Zuletzt bearbeitet von einem Moderator:
Also so sieht es in der KOmmandozeile aus...
Für welche Eingabe? "Log auslesen"? Ich sehe nicht wo da eine Ausgabe auf der Kommandozeile gemacht wird - welche Zeile?
Zu 1. Also ist das die böse Variante?
Es ist falsch und funktioniert nur falls ein int mind. so groß ist wie ein char Zeiger.
Zu 2. Sorry für die doofe Frage aber welchen Teil des Codes meinst du damit?
Das return str1 in der Funktion Unix2Date.
Zu 3. Ich dachte die sind schon deklariert :S
Du benutzt in main Zeile 53 z.B. die Funktion Unix2Date welche allerdings erst in Zeile 93 definiert (und somit auch erst deklariert) wird. Funktionen müssen vor ihrer ersten Benutzung deklariert werden (ansonsten kann das zu schwer identifizierbaren Fehlern führen).
 
Zuletzt bearbeitet:
Für welche Eingabe? "Log auslesen"? Ich sehe nicht wo da eine Ausgabe auf der Kommandozeile gemacht wird - welche Zeile?

Also der Teil
C:
 printf (str1); 
return (str1);

das printf (str1); ist es was unformatiert ist :) in der Kommandozeile.
Hatte es testweise mal auskommentiert um zu schauen ob es das ist was angezeigt wurde.


Das return str1 in der Funktion Unix2Date.

Ja :) ich habe meinen Eintrag bearbeitet aber leider zuspät :/
Ich habe geschaut aber keine Ahnung wie man das Problem lösen kann.



Du benutzt in main Zeile 53 z.B. die Funktion Unix2Date welche allerdings erst in Zeile 93 definiert (und somit auch erst deklariert) wird.

Das ist Falsch? Hmm weil es läuft ja einwandfrei, es tut was es tun muss.
Da gibt mein Compiler auch garkeine Fehler /Warnung aus.
 
Zuletzt bearbeitet von einem Moderator:
dann springt er bei 3 direkt zum Log COnvert und das was er in die Datei schreibt, gibt er auch in der Kommandozeile aus nur halt so unformatiert.
Über welchen Code sprichst du? In deinem Code oben gibt es keine Ausgabe auf die Kommandozeile oder ich sehe es nicht. Also, welche Zeile?
Ich habe geschaut aber keine Ahnung wie man das Problem lösen kann.
Man könnte die Funktion z.B. so definieren:
C:
const char* Unix2Date(int unixzeit,int modusTime) 
{
  static char str1[50];

  ...
  
  return str1;
}
Und wenn du deinen Code ordentlich einrücken würdest, wäre er auch leichter lesbar.
Das ist Falsch? Hmm weil es läuft ja einwandfrei, es tut was es tun muss.
Da gibt mein Compiler auch garkeine Fehler /Warnung aus.
Welchen Compiler verwendest du? Der GCC gibt für den Code aus Beitrag 1 folgendes aus:
Code:
footunx.c: In Funktion »main«:
footunx.c:37:9: Warnung: Implizite Deklaration der Funktion »date2Unix« [-Wimplicit-function-declaration]
footunx.c:41:9: Warnung: Implizite Deklaration der Funktion »errorSend« [-Wimplicit-function-declaration]
footunx.c:53:7: Warnung: Implizite Deklaration der Funktion »Unix2Date« [-Wimplicit-function-declaration]
footunx.c:53:7: Warnung: Format »%s« erwartet Argumenttyp »char *«, aber Argument 3 hat Typ »int« [-Wformat]
footunx.c:58:7: Warnung: Implizite Deklaration der Funktion »logConvert« [-Wimplicit-function-declaration]
footunx.c: In Funktion »Unix2Date«:
footunx.c:120:8: Warnung: Variable »cbuffer« wird nicht verwendet [-Wunused-variable]
footunx.c:99:7: Warnung: Variable »sommerZeit« wird nicht verwendet [-Wunused-variable]
footunx.c: In Funktion »logConvert«:
footunx.c:291:7: Warnung: Format »%s« erwartet Argumenttyp »char *«, aber Argument 4 hat Typ »int« [-Wformat]
footunx.c:220:7: Warnung: Variable »i« wird nicht verwendet [-Wunused-variable]
footunx.c: In Funktion »date2Unix«:
footunx.c:326:9: Warnung: Variable »dateptr2« wird nicht verwendet [-Wunused-variable]
footunx.c:325:9: Warnung: Variable »dateptr« wird nicht verwendet [-Wunused-variable]
footunx.c:322:7: Warnung: Variable »convert« wird nicht verwendet [-Wunused-variable]
footunx.c:319:8: Warnung: Variable »uhrzeit« wird nicht verwendet [-Wunused-variable]
footunx.c:318:8: Warnung: Variable »datum« wird nicht verwendet [-Wunused-variable]
footunx.c:315:7: Warnung: Variable »y« wird nicht verwendet [-Wunused-variable]
footunx.c: In Funktion »errorSend«:
footunx.c:458:1: Warnung: Kontrollfluss erreicht Ende von Nicht-void-Funktion [-Wreturn-type]
footunx.c: In Funktion »date2Unix«:
footunx.c:445:1: Warnung: Kontrollfluss erreicht Ende von Nicht-void-Funktion [-Wreturn-type]
footunx.c: In Funktion »logConvert«:
footunx.c:300:1: Warnung: Kontrollfluss erreicht Ende von Nicht-void-Funktion [-Wreturn-type]
footunx.c: In Funktion »date2Unix«:
footunx.c:393:41: Warnung: »unixzeit3« könnte in dieser Funktion uninitialisiert verwendet werden [-Wuninitialized]
 
Über welchen Code sprichst du? In deinem Code oben gibt es keine Ausgabe auf die Kommandozeile oder ich sehe es nicht. Also, welche Zeile?

C:
printf (str1); 
return (str1);

das printf (str1); ist es was unformatiert ist in der Kommandozeile.
Hatte es testweise mal auskommentiert um zu schauen ob es das ist was angezeigt wurde.






const char* Unix2Date(int unixzeit,int modusTime)
{
static char str1[50];

...

return str1;
}

und anstelle des ... kommt der Code den ich schon habe rein für den Teil? oder muss
ich den auch umschreiben?






Welchen Compiler verwendest du? Der GCC gibt für den Code aus Beitrag 1 folgendes aus:

Ich benutze den Dev C++.
 
C:
printf (str1); 
return (str1);

das printf (str1); ist es was unformatiert ist in der Kommandozeile.
Die Verwendung von printf in dieser Form ist sowieso gefährlich (was wenn ein % im String ist?).
C:
puts(str1);
und anstelle des ... kommt der Code den ich schon habe rein für den Teil?
Ja.
oder muss ich den auch umschreiben?
Nicht unbedingt. Wäre aber eine gute Idee.
Ich benutze den Dev C++.
Dev C++ ist kein Compiler sondern eine "IDE". Du hast also auch den GCC. Dann schalte alle Warnungen an! (Tools -> Compiler Options -> Compiler :

[x] Add the following commands when calling compiler:

-Wall

)

Gruß
 
Zuletzt bearbeitet:
Zurück