gpt4 book ai didi

C Linux printf 损坏的结果

转载 作者:太空宇宙 更新时间:2023-11-04 08:51:52 24 4
gpt4 key购买 nike

每当用户输入管道“|”时,我都会遇到一些问题字符输出变得全部损坏,我已经尝试刷新缓冲区无济于事。

#include <stdio.h>

int main(int argc, char **argv)
{
char userInput[2000];
while(1)
{
printf("Please Enter Your Input:");
scanf("%s", userInput);
printf("%s\n", userInput);
}
return 0;
}

最佳答案

您可以做几件事来调试它。首先 - 读入整个输入行,而不是第一个单词。执行此操作的安全方法是使用 getline() - 它会注意到该行是否对您的输入缓冲区来说太长,并进行调整(感谢 Elchonon Edelson 更新)

char *myString;
int stringLength;
size_t bufLength=0;
myString = NULL; // let getline() adjust the string
stringLength = getline(&myString, &bufLength, stdin)

接下来,打印出输入的行:

printf("The line is <<%s>>\n", myString);

注意 << 的使用和 >>显示字符串的开始/结束位置 - 请参见空格等。

最后,一次一个字符地打印出字符串,包括十六进制代码:

for(ii = 0; ii < stringLength; ii++) {
char ch;
ch = myString[ii];
printf("myString[%d]: character '%c', hex code %02x\n", ii, ch, ch);
}

这应该可以帮助您查明问题。

关于C Linux printf 损坏的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19393991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com