我使用EF Code First创建了具有彼此集合的类.实体:
public class Field
{
public int Id { get; set; }
public string Name { get; set; }
public virtual List<AppUser> Teachers { get; set; }
public Field()
{
Teachers = new List<AppUser>();
}
}
public class AppUser
{
public int Id { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public string UserName => Email;
public virtual List<Field> Fields { get; set; }
public AppUser()
{
Fields …Run Code Online (Sandbox Code Playgroud) 所以基本上我想将我写入stdin(包括换行符)的所有内容复制到字符串以用于哈希目的.我设法完成了这个并制作了小代码来代表我的问题.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define BUFFERSIZE 10000
int main()
{
char *myStr = calloc(1,1);
char buffer[BUFFERSIZE];
while( fgets(buffer, BUFFERSIZE , stdin) != NULL ){
myStr = realloc(myStr, strlen(myStr)+1+strlen(buffer) );
strcat( myStr, buffer );
}
printf("\n%s\n",myStr);
}
Run Code Online (Sandbox Code Playgroud)
当我输入一些文本然后按ENTER键并调用EOF后,一切正常.
但是当我启动程序时输入"a"然后我尝试调用EOF(使用Ctrl Z+ ⏎(Windows cmd提示符),Ctrl D(Linux))我必须执行三次程序才能实际打破循环.我期待最多2次.
有人可以解释如何使用EOF,stdin和fgets工作吗?或者我应该使用其他东西(例如getline)?如果我不清楚我的问题,我很抱歉,只要问你需要什么.
谢谢.
最近我在为2D数组赋值时遇到了这个问题.为了表示我的问题,我创建了小C代码.我正在使用QT创建者(社区)3.3.0和minGW 4.9.1 32位.
#include <stdio.h>
int main(void){
double m[2][2];
for (int i = 0 ; i<3; i++){
for(int j=0; j<3; j++)
printf("%p[%d][%d] ", (void*)&m[i][j],i,j);
printf("\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
作为输出我得到内存地址
0028FE98[0][0] 0028FEA0[0][1] 0028FEA8[0][2]
0028FEA8[1][0] 0028FEB0[1][1] 0028FEB8[1][2]
0028FEB8[2][0] 0028FEC0[2][1] 0028FEC8[2][2]
Run Code Online (Sandbox Code Playgroud)
您可以看到不相等的数组项具有相同的地址.因此,当我为例如[1] [2]赋值时,[2] [0]中的值也会改变.
请给我任何关于如何解决这个问题的建议.非常感谢你.
你能告诉我为什么这个程序有时会返回0xc0000005(崩溃),有时运行良好吗?我是C的初学者,不知道出了什么问题.我正在使用GNU GCC编译器和Code :: Blocks.先感谢您.
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<ctype.h>
typedef struct member {
int number;
char *line;
struct member *next;
}MEMBER;
typedef MEMBER *LINKED_LIST;
int main() {
char file_line [120], *str;
FILE *fi, *fo;
LINKED_LIST curr, head;
int count = 0, count_sort = 0 , end_sort, tmpint;
fi = fopen("vstup.txt","r");
if(fi == NULL){
printf("vstup.txt - ERROR when opening file/file not found\n");
return 0;
}
curr = (LINKED_LIST)malloc(sizeof(LINKED_LIST));
head = curr;
while(fgets(file_line,sizeof(file_line),fi))
{
curr->number = strtol(file_line, &str,10);
while(isspace(*str))
str++;
curr->line = strdup(str); …Run Code Online (Sandbox Code Playgroud)