C programm vorheriges Datum mit aktuellen Datum vergleichen?

Hallo, ich lese eine Datei in C ein und möchte das Datum von der aktuellen Zeile mit der vorherigen Zeile vergleichen. Wenn dies der Fall ist möchte ich die aktuelle Zeile komplett löschen (aktuell werden diese Zeilen nur gezählt mit der Variable count). Ich verwende memcpy um das Aktuelle Datum in die Variable datumAlt, em Ende der while Schleife, zu speichern. Nur ist es so sobald die Schleife von vorne beginnt steht in datumAlt auch wieder das aktuelle Datum. Habe dies mit dem Debugger festgestellt. Weiß jemand warum dies so ist, bzw. wie kann ich diesen Fehler beheben? Danke für einen Tipp.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_LINE_LENGTH 1000      // maximum length of a line in the input file

char lines[MAX_LINE_LENGTH];

const char trennzeichen[] = ";";

int main()
{
    // Open the input file
    FILE *fp = fopen("alles_perfekt.txt", "r");
    if (fp == NULL)
    {
        printf("Failed to open the file.\n");
        return 1;
    }


    int count =0;
    char ticker[50], datumAktuell[50], datumAlt[50];
    char line[MAX_LINE_LENGTH];

    while ( (fgets(line, sizeof(line), fp) != NULL))
    {

        sscanf(line,"%[^;];%[^;];\n",ticker, datumAktuell);

        if(datumAktuell==datumAlt)
        {
            count++;
            printf("%d\n",count);
        }


        memcpy(datumAlt, datumAktuell, sizeof(datumAktuell));

    }


    // Close the input and output file
    fclose(fp);

    return 0;
}


Programmiersprache, C (Programmiersprache)
C Variable wird zurückgesetzt, wieso?

ich hab grade angefangen, C zu lernen, und wollte als erstes mittellanges script ein altes Python-Script zu C umwandeln.

das Python-Script hat funktioniert, und das C-Script ist eine exakte Kopie davon, aber es funktioniert nicht.

das C-Script lautet:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>


int main()
{
    const double pi = 3.141592653589793238462643383;
    double k = 10;
    double result = 50.0;

    while (true) {
        double i = round(k/pi);
        double a = pi-k/i;
        double b = fabs(a);
        if (b < result) {
            double result = fabs(a);
            printf("%f / %f\n", k, i);
        }
        k++;
    }
    return 0;
}

Und soll Annäherungen an Pi finden, indem es einfache Divisionen ausrechnet, e.g. 355/113 oder 104348/33215 oder sogar noch bessere.

das Problem scheint zu sein, dass, wenn man es testet, die Variable {result} immer am Anfang des IF-Zweiges 50.000... zu sein scheint, also quasi zurückgesetzt wird. Dann wird der IF-Zweig bei jeder einzelnen Iteration ausgeführt, und statt guten Annäherungen kommt dann eine für jede Ganze Zahl.

woran liegt das?

und falls es jemand braucht, hier ist das Python-Script dazu:

pi = 3.141592653589793238462643383
k = 10
result = 50.0

while 1:
    i = round(k/pi)
    a = pi-k/i
    if abs(a) < result:
        result = abs(a)
        print(k, i, k/i, a)
    k += 1
Programmiersprache, Python, C (Programmiersprache)
expected ';' before numeric constant?

Hallo!

Für mein Spalierobst habe ich eine Bewässerung gebaut. Das Wasser ist in einem hoch gestellten Gartenfass. Über einen selbst gebauten Dauermagnet-Wasserhahn soll das gesammtelte Wasser in Abhängigkeit der Bodenfeuchtigkeit in ein Schläuchlein mit Tropfern fließen, und so den Boden befeuchten

Ein Arduino soll über einen Servo das Stellen realisieren.

Ist der Boden zu trocken, ermittelt das ein capazitiver Soil Moisture Sensor v2.0. Ein Servo schwenkt einen an ihm befestigten Dauermagnet über die Stelle des Dauermagnet-Wasserhahnes, unter dem ein Dauermagnet-Ventil angezogen wird.Somit ist der Weg des Wassers frei.

Ist der Boden feucht genug, schwenkt der Servo seinen Magneten zurück in die Ausgansposition. Das Dauermagnet-Ventil fällt und schließt die Wasserzufuhr.

Schön wäre, wenn der Servo zwischen den Aktionen stromlos sein könnte. Das bekomme ich auch nicht hin.

Ein Arduino soll die Regelung übernehmen.

Vielen Dank Demjenigen, der mir helfen kann.

Mein bisheriger Code ist im folgendem Foto.

#include<Servo.h>

Servo S;

const int SensorPin = A0;

void setup() {

 Serial.begin(9600);

 pinMode (A0, INPUT);

 S.attach(9);

}

void loop() {

               // serieller Monitor geht nicht mit { } hinter if

  int analogWert = analogRead(A0); // Auslesen des analogen Sensorwertes

 Serial.println(analogWert);   // Ausgabe des Wertes auf der seriellen Konsole

 delay(1000); 

 if (analogRead(A0)> 270) // zu trocken   

  {S.write (65);  //Servo geh auf 65 GRad //dies geht nicht 

 delay(6000);}//pendelt 0 -- 65 -- 0 im 6000, 500 Takt

 //Wenn delay (6000) deaktiviert wird geht nichts mehr!

 

 else (analogRead(A0)< 260) ; // zu nass - dies funktioniert

  S.write (0); //Servo geh auf 0 Grad

  delay (500);

  }

Der Code wird kompilliet, aber funktioniert noch nicht zufriedenstellend.

Bild zu Frage
Arduino, C (Programmiersprache)
ChatBot wie ChatGPT programmieren? (Einfacher)?

Hi, mein großes Projekt für dieses Jahr soll sein, einen intelligenten ChatBot zu Coden. Ähnlich wie ChatGPT, aber mit ist natürlich bewusst, dass ich einen so komplexen Bot nicht machen kann. Es soll ein kleinerer werden.

Meine Vorstellungen:

Die Oberfläche mit HTML und CSS

Die Datenbank mit SQL? (ich habe wenig Erfahrung mit Datenbanken, deshalb das Fragezeichen)

Ansonsten die Logik eventuell mit JS, aber eventuell mit etwas anderem, da man ja über JS leicht Schadsoftware injizieren kann.

Könnt ihr mir da einen Vorschlag machen?

Die Funktion habe ich mir so vorgestellt:

In einer Datenbank sind entweder Schlüsselwörter oder komplette Antworten gespeichert. Zu jedem Schlüsselwort sollen Daten gespeichert sein. Wenn in der Datenbank nur Schlüsselwörter gespeichert sind, soll der Bot automatisch Sätze dazu formulieren.

Ein Beispiel:

Eingegebene Frage: Wer ist der Bundeskanzler von Deutschland?

(Bot Sicht spezielle Wörter im Text, z.B. Bundeskanzler und Deutschland)

in der Datenbank: Olaf Scholz (Daten zu ihm, Schlüsselwörter wann diese Antwort genutzt wird) z.B. Olaf Scholz (deutscher Kanzler, männlich, …)[Bundeskanzler+Deutschland, Olaf Scholz, Scholz]

In dem runden Klammern die Daten zu ihm, in den eckigen die Schlüsselwörter, wann die Antwort genutzt wird. Ansonsten halt vorgefertigte Antworten, die sich auch an Schlüsselwörtern in der Frage orientieren.

Wenn nur Wörter gespeichert sind, dann soll er sich einen Satz drumherum bauen.

Ich würde ihn im Browser laufen lassen, aber nicht öffentlich. Eventuell kann man ihn auch mit Google verknüpfen… auch wenn dann vermutlich die ein oder andere Antwort falsch ist. Aber das macht bei meinem nichts. Was haltet ihr davon? Wie würdet ihr es umsetzen? Welche Sprache? Eventuell ein paar Zeilen Code für bestimmte Funktionen?

LG

Programm, SQL, HTML, Programmierer, programmieren, CSS, Java, JavaScript, künstliche Intelligenz, Programmiersprache, Python, C (Programmiersprache), Chatbot, Python 3, Pygame, ChatGPT
Wie verbiete ich Buchstaben einfach und simpel in C?

Ich habe vor ein paar tagen mit dem Programmieren angefangen und arbeite gerade and einem Taschenrechner. Da wo die Zahlen eingegeben werden können soll kurz und simpel ein Code stehen der Buchstaben und Sonderzeichen verbietet.

Bis jetzt funktioniert alles.

Der Code sieht gerade so aus:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    float a,b;
    char l;
    printf("Tippe Y um zuzustimmen das sie keine ungefragten angaben verwenden werden und tippen sie L um dem nicht zu zustimmen!:");
    scanf("%c",&l);
    switch(l){
    case 'Y': printf("Vielen Dank das sie Kooperation!\n");
    break;
    case 'L': printf ("Keine Gnade!\n");
    exit(0);
    break;
    default: printf ("\n");
    exit(0);
    break;
    }
   printf("Erste Zahl eingeben:");
   scanf("%f",&a);
   printf("Zweite Zahl eingeben:");
   scanf("%f",&b);
float erga,ergs,ergd,ergm;
 /*
 Ein Kommentar
 */
  char r;
  printf("Gebe eine Rechenart an +,-,/,%,*:");
  scanf("\n%c",&r);
  switch(r) {
  case '+':
    erga = a + b;
  printf("Ergebnis Addition: %f + %f = %f\n", a,b,erga);
   break;
  case '-':
    ergs = a - b;
  printf("Ergebnis Subtraktion: %f - %f = %f\n",a,b, ergs);
   break;
  case '/':
    if (b==0){
    printf("Division durch 0 ist nicht definiert!\n");
   break;}
   else {
    ergd = a / b;
  printf("Ergebnis Division: %f / %f = %f\n",a,b, ergd);
   break;}
  case '*':
    ergm = a * b;
  printf("Ergebnis Multiplikation: %f * %f = %f\n",a,b, ergm);
   break;
  default: printf("Ihre Angabe ist keine der erlaubten Rechenarten, erlaubt sind +,-,%,/,* \n versuchen sie es erneut:\n");
  exit(0);
   break;
  }
int ss;
  printf("Um abzubrechen tippen sie die 1 um den vorgang zu wiederholen tippen sie die 2:");
    scanf("\n%d",&ss);
   switch(ss){
    case 1: printf("Auch wiedersehen!");
break;
case 2: return main();
break;
default: printf("Angabe nicht definiert, automatischer Abbruch");
break;
   }
return 0;
}
Anfänger, programmieren, Rechner, Einsteiger, Programmiersprache, C (Programmiersprache)

Meistgelesene Fragen zum Thema C (Programmiersprache)