我对Objective-C比较新,我知道它是C的超集.但是当我尝试在GCC中编译这个C代码时,它给了我一个错误,我无法执行代码.
#include <stdio.h>
int main(){
int x;
printf("Input int:\n");
scanf("%d", x);
printf("%d", x);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我执行其他代码时,没有错误,但输出错误.注意:唯一的变化是"int*x".
#include <stdio.h>
int main(){
int *x;
printf("Input int:\n");
scanf("%d", x);
printf("%d", x);
return 0;
}
INPUT: 3
OUTPUT: 2147307520
Run Code Online (Sandbox Code Playgroud) 为了回到C编程的流程,我一直在打字一些简单的测试程序.我遇到了scanf函数的一个奇怪问题.我在下面的代码中有3个,但只有前2个被初始化; 第三个scanf被忽略.这是正常的,还是我做错了什么?我一直在盯着这段代码过去半小时,我找不到任何错误.
#include <stdio.h>
int math(int a, int b, char selection) {
int result;
switch (selection) {
case 'a':
result = a + b;
break;
case 's':
result = a - b;
break;
case 'm':
result = a * b;
break;
case 'd':
result = a / b;
break;
}
return result;
}
int main() {
int num1 = 0;
int num2 = 0;
int result = 0;
char selection;
printf("Enter first number: ");
scanf("%i", &num1);
printf("Enter second number: "); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 fscanf 来读取和打印屏幕上的每个字符,但是在运行程序时出现分段错误(核心转储)。这是我的代码:
#include <stdio.h>
main(int argc, char * argv[]) {
int *a ;
FILE *input;
if (argc>=2) {
input= fopen(argv[1],"r");
if (input!=NULL) {
while (feof(input)==0) {
fscanf(input,"%d\n",a);
printf("%d\n",*a);
}
fclose(input);
} else {
printf("Error!\n");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我提供文件作为参数,如下所示:
./myprog input.txt
Run Code Online (Sandbox Code Playgroud)
该文件input.txt包含以下内容:
23
47
55
70
Run Code Online (Sandbox Code Playgroud) #include <stdio.h>
#include <string.h>
#include <ctype.h>
void trinanguloNumeros(){
char caracter = 'y';
int iTamano;
while (caracter == 'Y' || caracter == 'y') {
printf("Realizar triangulo:\n");
printf("De que tamaño desea su triangulo? [1-20]");
scanf("%i", &iTamano);
int i,j;
for(i=1; i<= iTamano; i++ ){
for(j=1; j <= i; j++){
printf("%i", j);
}
printf("\n");
}
printf("Desea Intentar nuevamente? [y/n]\n");
scanf("%c", &caracter);
printf("%c", caracter);
}
printf("Termina!!");
}
int main(void){
trinanguloNumeros();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
scanfvar 的第二个caracter不起作用并打破 while循环.我不知道为什么这会打破循环并且不再设置变量.
伙计们,我想从我的文件中读取文本,并将每个字符分配给数组的单个元素
char A[1000];
FILE * fpointer;
fpointer=fopen("text.txt","r");
i=0;
while(!feof(fpointer))
{
fscanf(fpointer,"%c",&A[i]);
i=i+1;
}
fclose(fpointer);
for (i=0;i<100;i++)
{
printf("%c",A[i]);
}
return 0;
Run Code Online (Sandbox Code Playgroud)
但问题是输出是一些奇怪的符号而不是文件的文本,这是"这只是一个测试".为什么会发生这种情况?
如果我执行以下操作会发生什么
scanf("%d,%d", &i, &j);
Run Code Online (Sandbox Code Playgroud)
并提供导致匹配失败的输入?它会存储垃圾j吗?
诺布在这里
我一直在研究如何在C中初始化变量.我得出结论,总是初始化变量是一种好习惯.但是,我还没有找到关于如何初始化变量的明确答案.例如,如何初始化char和字符串?当然你可以根据需要初始化它们,但使用什么是零/空白值?
int a = 0;
char b = ?;
char c[] = ???;
Run Code Online (Sandbox Code Playgroud)
另外,如果在基本程序中声明和定义变量然后使用scanf()从用户获取值,那该怎么办?你应该在使用scanf()之前初始化变量吗?
先感谢您.
C 编程中的scanf("%s")、scanf(\xe2\x80\x9d%[^\\n]s")和有什么区别?gets(a)
scanf("%[^\\n]s", a)\n\nscanf("%s", a)\n\ngets(a)\nRun Code Online (Sandbox Code Playgroud)\n\n三种字符数组输入方式的主要区别是什么?
\n#include <stdio.h>
int main() {
int c;
while(getchar() != EOF) {
if (getchar() == ' ') {
c++;
}
printf("%i", c);
}
}
Run Code Online (Sandbox Code Playgroud)
我意识到输入一个像你正在读的句子一样的句子
我\n意识到\n\n正在输入\n\n\a\n ...
我相信这就是它的读取方式, getchar() 不会到达 EOF 以使 while 括号中的条件为假..
我的目标是制作一个程序,它接受我的输入。如果达到 EOF 时计数器上计数有任何空格,则读取它。继续读取的条件将变为 false 计数器值将打印在屏幕上显示我的整个输入中有多少个空格。
这不可能吗?这就是人们只使用 scanf() 的原因吗?
这是我尝试某事时得到的输出
user@user:/c# ./a.out
hello stackoverflow this does not do what i want it to
001111111222223344445666677
Run Code Online (Sandbox Code Playgroud) 假设我有一个这样的输入,每行一个单元格:
[0,0]
[0,2]
[0,4]
[2,4]
[4,4]
Run Code Online (Sandbox Code Playgroud)
我设法使用类似的方法逐一阅读它们,[%d,%d]并得到如下输出:
cell1: row: 0, col:0
cell1: row: 0, col:2
Run Code Online (Sandbox Code Playgroud)
然后我有另一个像这样的输入
[0,0]->[0,1]->
[0,2]->[0,3]->
[0,4]->[1,4]->
[2,4]->[3,4]->
[4,4]->[5,4]
Run Code Online (Sandbox Code Playgroud)
如何在不被箭头'打断的情况下读取输入->'?