The difference in string and char[], readf() and scanf()
Dennis Ritchie via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Mar 21 13:02:38 PDT 2015
On Saturday, 21 March 2015 at 19:09:59 UTC, FG wrote:
> In what universe?! Which OS, compiler and architecture?
On Saturday, 21 March 2015 at 19:09:59 UTC, FG wrote:
> In what universe?! Which OS, compiler and architecture?
Windows 8.1 x64, dmd 2.066.1:
import std.range, std.stdio;
void main () {
stdout = File("in.txt", "w");
'a'.repeat(100000).writeln;
}
import std.stdio;
import std.cstream;
void main () {
freopen("in.txt", "r", din.file);
freopen("out.txt", "w", dout.file);
char[100000] a;
scanf("%s", a.ptr);
int lenA;
foreach (i; 0 .. 100000) {
if (a[i] == 'a')
++lenA;
printf("%c", a[i]);
}
printf("\n%d\n", lenA); // 32767
}
By the way, in Ubuntu 14.04 LTS (dmd 2.066.1) everything works
fine:
#!/usr/bin/rdmd
import std.range, std.stdio;
void main () {
stdout = File("in.txt", "w");
'a'.repeat(100000).writeln;
}
#!/usr/bin/rdmd
import std.stdio;
import std.cstream;
void main () {
freopen("in.txt", "r", din.file);
freopen("out.txt", "w", dout.file);
char[100000] a;
scanf("%s", a.ptr);
int lenA;
foreach (i; 0 .. 100000) {
if (a[i] == 'a')
++lenA;
printf("%c", a[i]);
}
printf("\n%d\n", lenA); // 100000
}
More information about the Digitalmars-d-learn
mailing list