Citat:
Ursprungligen postat av
bosscs2
och om man ska skriva motsvarande program i C, jag försöker med följande:
Kod:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int sum = 0;
char numbers[255];
size_t l;
do
{
scanf("%s",numbers);
l = strlen(numbers);
if (l > 0)
sum += atoi(numbers);
} while (l > 0);
printf("%d",sum);
}
Problemet är:
l = strlen(numbers)
får inte längden på användarens input?
Motsvarande function för blanksteg = 0 verkar inte fungera med varken strlen eller sizeof så det måste vara något jag missat här?
Jag är inte expert på vare sig C++ eller C, men C++ har en strängklass som inte kan appliceras på C.
C-style strängar är alltså annorlunda. En tom sträng i C innehåller en byte efter de är
noll-avslutade.
Kolla på detta program där msan använder
getline för att se hur du gör, men den tomma strängen innehåller 1 tecken inte 0, vilket du märker om du test kör detta på t.ex.
https://cplayground.com/
[PHP] #include <stdio.h>
#include <stdlib.h>
int input(char *s,int length);
int main()
{
char *buffer;
size_t bufsize = 32;
size_t characters;
buffer = (char *)malloc(bufsize * sizeof(char));
if( buffer == NULL)
{
perror("Unable to allocate buffer");
exit(1);
}
printf("Type something: ");
characters = getline(&buffer,&bufsize,stdin);
printf("%zu characters were read.\n",characters);
printf("You typed: '%s'\n",buffer);
return(0);
}[/PHP]