Autor Beitrag
kRöTe
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Sa 13.01.07 06:05 
Tach miteinander!

bin Newbie in C-Sprache.
Hab ne Frage zum Thema Arrays.

Hier ist der Quellcode:
ausblenden C-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
#include "stdafx.h"
#include "stdio.h"


char walze1[]=" ";


void eingabe(void)
{
  for(a=0;a<=49;a++)
  {  
        c=getch();
    if(c==0x0D)
    {
       code();  
    }
    else
        {
       walze1[a]=c;
        }
}


wie kann ich die Länge des Strings habn?

thanks!

Moderiert von user profile iconChristian S.: Quote- durch C#-Tags ersetzt
Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Sa 13.01.2007 um 11:06
r2c2
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 324
Erhaltene Danke: 2

Linux

BeitragVerfasst: Sa 13.01.07 10:35 
Hallo,
erstmal vorneweg: Ich glaub du bist im falschen Forum gelandet: Du hast n C-Problem, hier gehts aber um C#...
Sollte n Mod ggf. mal in OT oder so schieben...

Zu deinem Problem:
Schon ewig kein C mehr geschrieben. Sowas könnte aber funktionieren:
ausblenden C#-Quelltext
1:
Length = sizeof(walze1) / sizeof(char);					


ggf. solltest du mal Google und/oder das C-Tutorial deiner Wahl befragen...

BTW: Benutzt man in C für strings nicht normalerweise char* ? :gruebel:

mfg

Christian

_________________
Kaum macht man's richtig, schon klappts!
Waldteufel
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 13.01.07 14:12 
Hi Kröte.

Zuerst einmal ist dein String "walzel" nur ein Zeichen lang, du greifst aber auch auf das 48. Zeichen zu. Das kann nicht gut gehen. Im Übrigen fehlte die schließende Klammer zu for. Auch musst du, damit strlen korrekt arbeitet, das letzte Zeichen auf '\0' setzen.

Schreibst du den Code etwa so, dann erhälst du die Länge per strlen(walzel).
ausblenden C-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
#include "stdafx.h"
#include "stdio.h"

char walze1[50]; // von 0 bis 49

void eingabe(void) {
  for(a = 0; a < 50; ++a) {  
    c = getch();

    if(c == 0x0D) {
      walze1[a] = 0x00;
      code();  
    } else walze1[a] = c;
  }
}


Noch besser wäre allerdings, du verwendest gleich C++, dann sieht's nämlich so aus wie unten und die Länge erhälst du mit walzel.length(). (Will dir nicht reinreden, aber ich find' sowas hübscher...)
ausblenden C++
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
#include "string"
#include "stdio.h"

using namespace std;

string walze1;

void eingabe(void) {
  for(a = 0; a < 49; ++a) {  
    c = getch();

    if (c == 0x0D) code();  
    else walzel.append(string(1, c));
  }
}


Gruß,
Waldteufel

PS: Die beiden Codes sind aus dem Gedächtnis geschrieben, also ungetestet!