2 a-v: я не уверен был точно, что 1 - это дескриптор консоли, и да, знаю что он можт быть дескриптором кого угодно - но у консольного ввода-вывода дескриптор то ли 1 то ли 2...
0 - stdin (стандартный ввод)
1 - stdout (стандартный вывод)
2 - stderr (вывод ошибок)
И никак иначе в Linux. Другое дело, что они могут быть перенаправлены туда-сюда, о чем и хотел поведать a-v.
1) есть ли в с/с++ функции для работы с типом string? (тогда как подключить нужную библиотеку)
Есть. В С++.
include <string>
include <iostream>
int main (void)
{
string mystring1, mystring2;
cout << "Enter first string:" << endl;
cin >> mystring1;
cout << "Enter second string:" << endl;
cin >> mystring2;
cout << "You've entered:" << endl;
cout << "-" << mystring1 << endl;
cout << "-" << mystring2 << endl;
return 0;
}
Аналога string в С я не знаю. Там используются NULL-terminated строки, т.е. char* и пачка функций для работы с ними: strlen, strcat, strcmp...
2) если мне хотса создать окошко с кнопочкой, надо лезть обязательно в какие-то редакторы, типа эклипса того же или мона в gedit все набрать. (скорее всего мона, НО ГДЕ ВЗЯТЬ то, что нужно писать?)
Если хочется совсем низкоуровнево - то нужно смотреть в сторну xlib.
Если хочется уровнем по выше (объектно-ориентированное) - то wxWidgets (хорош под GNOME), QT (хорош под KDE). Обе кроссплатформенные. Будут работать и в винде.
но функция sizeof(s) будет выдавать 200, независимо от того, скока букв впечатали.
sizeof возвращает размер типа. Нельзя ее использовать со строками. В С для получения размера строки используется функция strlen. В С++, используя вышеприведенный класс string, можно использовать метод string::size().
можно написать свою библиотеку, конечно, что я и сделал.
Не изобретайте велосипед.
if (s == "NAME") {printf("YES\n");}
Экземпляры класса string можно сравнивать, как вы здесь приводите.
Еще:
printf - это стандартный способ вывода в С.
В С++ принято использовать <iostream> и cin, cout. Хотя printf тоже будет работать.