我想(到现在为止)getch()的函数从输入缓冲区(或键盘,简单)读取一个字符.但我不得不和我的实验室老师争论.他们说getch()的唯一工作就是执行程序.我知道getch()可以这样使用.但我只是想知道这是它发明的真正目的吗?或者,它很少用于获得单字符输入?
我正在使用一个内部软件工具,显示和记录从我开发嵌入式软件的产品的串行调试端口收集的格式化诊断数据.这是在C和非常老.它是使用Borland Turbo-C v1.01(1990版权所有)构建的.如果可能的话,我宁愿修改而不是为现代环境重写工具.
我想一次从多个设备收集调试数据.我设想了几个通过USB->串行适配器连接到集线器的设备,连接到PC(运行Windows XP).在每个设备上运行一个诊断工具实例(同样,在Windows中),指向相应的COM端口.容易,对吗?
不完全的.观察我正在使用的串口初始化函数:
void serinit(int baudrate, char paristat, char adaptnum) {
int hibcon, lobcon, paricon;
if(adaptnum == '3') {
sioreg = lowbaud = 0x3E8; // SIO (Serial I/O Reg.)
intenreg = highbaud = 0x3E9; // IER (Interrupt Enable Reg.)
intidreg = 0x3EA; // IIR (Interrupt Ident. Reg.)
linecon = 0x3EB; // LCR (Line Control Reg.)
modemcon = 0x3EC; // MCR (Modem Control Reg.)
linestat = 0x3ED; // LSR (Line Status Reg.)
modemstat = 0x3EE; // MSR (Modem …
Run Code Online (Sandbox Code Playgroud) 再会,
所以我决定再次通过我的 C 并开始对字符串中的单词进行简单的搜索。
这是我的代码:
#include<stdio.h>
#include<conio.h>
#include<string.h>
main(){
char word[100];
char sentence[100];
clrscr();
printf("Enter a word: ");
fgets(word, 100, stdin);
getch();
printf("The word is : %s", &word);
getch();
printf("\nEnter a sentence: ");
fgets(sentence, 100, stdin);
getch();
printf("The sentence is: %s",&sentence);
getch();
if(strstr(sentence,word) == 0){
printf("word found!");
}
getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,每当我尝试使用 搜索字符串中的单词时strstr
,它总是返回word found。我也尝试过使用,strcmp
但这只会比较字符串的第一个实例,并在找不到匹配项时停止,因此如果您想在字符串问题中进行单词搜索,这并不是真正可取的。
我以前从未真正制作过这样的程序,实际上从未需要过。所以我可以问为什么不能正常工作,因为根据它的描述strstr
应该是在一个句子中搜索一个词还是我只是误解了它。
另外,如果您对我的程序有任何意见,请随时提出,以便我意识到我的错误。
谢谢
示例:单词:狗
句子:狗在这里
应该返回真
我遇到了运行c程序的问题.我正在使用Turbo C++编译器,但是当我编写代码并编译时,编译没有问题.但是当我运行程序时不显示任何输出.
这是代码:
#include<stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud) 如何在windows中全局设置turbo c路径,以便我可以在Windows XP中使用命令提示符编译和运行我的C程序(在其他驱动器中)?任何人都可以通过输入来告诉我如何在命令提示符中的每个驱动器上获取命令
c:\tcc
Run Code Online (Sandbox Code Playgroud)
在Windows和turbo c环境中的命令提示符?
此代码在Turbo C上运行但在gcc编译器上运行
错误:'*'标记之前的语法错误
#include<stdio.h>
int main()
{
char huge *near *far *ptr1;
char near *far *huge *ptr2;
char far *huge *near *ptr3;
printf("%d, %d, %d\n", sizeof(ptr1), sizeof(ptr2), sizeof(ptr3));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Turbo C输出为:
4,4,2你能解释一下Turbo C的输出吗?
在Turbo C编译器中,当使用sizeof()运算符时,int指针的大小显示为2个字节.现在,如果我打印一个int变量的地址,它就是一个8位的十六进制数,这使得地址的大小为32位(或4个字节).
那么,为什么Turbo编译器显示2个字节大小的指针?
我有一个非常基本的查询.对于以下代码:
int i = -1;
unsigned int j = (unsigned int) i;
printf("%d",j); // I get 65535 the int limit in turbo C 16 bit compiler
Run Code Online (Sandbox Code Playgroud)
它不应该只是放下负号或者它是否包围了极限?
(k < m ? k++ : m = k)
此特定表达式给出了编译时错误,表示需要左值.问题在于k++
.无法理解此表达式中的错误.
memset
我在 Turbo C 中遇到了一个大的 for 循环问题。
当代码开始崩溃时,我正在 Virtual Box 上的 MS-DOS 6.22 上使用 Turbo C++ 3.00 编写一个基于模式 13h 的小型图形库。
我知道 Turbo C 确实已经过时了,但我想在类似 DOS 的系统上尝试旧式编码。
这是我的代码:
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <dos.h>
int main(void) {
int *buf;
unsigned int i;
_AH = 0x0;
_AL = 0x13;
geninterrupt(0x10);
buf = malloc(sizeof(int)*64000);
memset(buf,15,64000); //can't figure out why memset does not work properly...
for (i=0;i< (unsigned int)64000;i++){
buf[i] = 15; //trying to forcely set each byte to 0xf... …
Run Code Online (Sandbox Code Playgroud)